hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/phy/tegra/xusb.c
....@@ -556,6 +556,7 @@
556556 usb_role_switch_unregister(port->usb_role_sw);
557557 cancel_work_sync(&port->usb_phy_work);
558558 usb_remove_phy(&port->usb_phy);
559
+ port->usb_phy.dev->driver = NULL;
559560 }
560561
561562 if (port->ops->remove)
....@@ -662,6 +663,9 @@
662663 port->dev.driver = devm_kzalloc(&port->dev,
663664 sizeof(struct device_driver),
664665 GFP_KERNEL);
666
+ if (!port->dev.driver)
667
+ return -ENOMEM;
668
+
665669 port->dev.driver->owner = THIS_MODULE;
666670
667671 port->usb_role_sw = usb_role_switch_register(&port->dev,
....@@ -775,6 +779,7 @@
775779 usb2->base.lane = usb2->base.ops->map(&usb2->base);
776780 if (IS_ERR(usb2->base.lane)) {
777781 err = PTR_ERR(usb2->base.lane);
782
+ tegra_xusb_port_unregister(&usb2->base);
778783 goto out;
779784 }
780785
....@@ -841,6 +846,7 @@
841846 ulpi->base.lane = ulpi->base.ops->map(&ulpi->base);
842847 if (IS_ERR(ulpi->base.lane)) {
843848 err = PTR_ERR(ulpi->base.lane);
849
+ tegra_xusb_port_unregister(&ulpi->base);
844850 goto out;
845851 }
846852