.. | .. |
---|
556 | 556 | usb_role_switch_unregister(port->usb_role_sw); |
---|
557 | 557 | cancel_work_sync(&port->usb_phy_work); |
---|
558 | 558 | usb_remove_phy(&port->usb_phy); |
---|
| 559 | + port->usb_phy.dev->driver = NULL; |
---|
559 | 560 | } |
---|
560 | 561 | |
---|
561 | 562 | if (port->ops->remove) |
---|
.. | .. |
---|
662 | 663 | port->dev.driver = devm_kzalloc(&port->dev, |
---|
663 | 664 | sizeof(struct device_driver), |
---|
664 | 665 | GFP_KERNEL); |
---|
| 666 | + if (!port->dev.driver) |
---|
| 667 | + return -ENOMEM; |
---|
| 668 | + |
---|
665 | 669 | port->dev.driver->owner = THIS_MODULE; |
---|
666 | 670 | |
---|
667 | 671 | port->usb_role_sw = usb_role_switch_register(&port->dev, |
---|
.. | .. |
---|
775 | 779 | usb2->base.lane = usb2->base.ops->map(&usb2->base); |
---|
776 | 780 | if (IS_ERR(usb2->base.lane)) { |
---|
777 | 781 | err = PTR_ERR(usb2->base.lane); |
---|
| 782 | + tegra_xusb_port_unregister(&usb2->base); |
---|
778 | 783 | goto out; |
---|
779 | 784 | } |
---|
780 | 785 | |
---|
.. | .. |
---|
841 | 846 | ulpi->base.lane = ulpi->base.ops->map(&ulpi->base); |
---|
842 | 847 | if (IS_ERR(ulpi->base.lane)) { |
---|
843 | 848 | err = PTR_ERR(ulpi->base.lane); |
---|
| 849 | + tegra_xusb_port_unregister(&ulpi->base); |
---|
844 | 850 | goto out; |
---|
845 | 851 | } |
---|
846 | 852 | |
---|