| .. | .. |
|---|
| 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 | |
|---|