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