.. | .. |
---|
73 | 73 | struct device *dev = &interface->dev; |
---|
74 | 74 | struct mvusb_mdio *mvusb; |
---|
75 | 75 | struct mii_bus *mdio; |
---|
| 76 | + int ret; |
---|
76 | 77 | |
---|
77 | 78 | mdio = devm_mdiobus_alloc_size(dev, sizeof(*mvusb)); |
---|
78 | 79 | if (!mdio) |
---|
.. | .. |
---|
93 | 94 | mdio->write = mvusb_mdio_write; |
---|
94 | 95 | |
---|
95 | 96 | usb_set_intfdata(interface, mvusb); |
---|
96 | | - return of_mdiobus_register(mdio, dev->of_node); |
---|
| 97 | + ret = of_mdiobus_register(mdio, dev->of_node); |
---|
| 98 | + if (ret) |
---|
| 99 | + goto put_dev; |
---|
| 100 | + |
---|
| 101 | + return 0; |
---|
| 102 | + |
---|
| 103 | +put_dev: |
---|
| 104 | + usb_put_dev(mvusb->udev); |
---|
| 105 | + return ret; |
---|
97 | 106 | } |
---|
98 | 107 | |
---|
99 | 108 | static void mvusb_mdio_disconnect(struct usb_interface *interface) |
---|