net: mdio: mvusb: Fix an error handling path in mvusb_mdio_probe()
Should of_mdiobus_register() fail, a previous usb_get_dev() call should be
undone as in the .disconnect function.
Fixes: 04e37d92fb
("net: phy: add marvell usb to mdio controller")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
424f8416bb
commit
27c1eaa072
|
@ -67,6 +67,7 @@ static int mvusb_mdio_probe(struct usb_interface *interface,
|
||||||
struct device *dev = &interface->dev;
|
struct device *dev = &interface->dev;
|
||||||
struct mvusb_mdio *mvusb;
|
struct mvusb_mdio *mvusb;
|
||||||
struct mii_bus *mdio;
|
struct mii_bus *mdio;
|
||||||
|
int ret;
|
||||||
|
|
||||||
mdio = devm_mdiobus_alloc_size(dev, sizeof(*mvusb));
|
mdio = devm_mdiobus_alloc_size(dev, sizeof(*mvusb));
|
||||||
if (!mdio)
|
if (!mdio)
|
||||||
|
@ -87,7 +88,15 @@ static int mvusb_mdio_probe(struct usb_interface *interface,
|
||||||
mdio->write = mvusb_mdio_write;
|
mdio->write = mvusb_mdio_write;
|
||||||
|
|
||||||
usb_set_intfdata(interface, mvusb);
|
usb_set_intfdata(interface, mvusb);
|
||||||
return of_mdiobus_register(mdio, dev->of_node);
|
ret = of_mdiobus_register(mdio, dev->of_node);
|
||||||
|
if (ret)
|
||||||
|
goto put_dev;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
put_dev:
|
||||||
|
usb_put_dev(mvusb->udev);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mvusb_mdio_disconnect(struct usb_interface *interface)
|
static void mvusb_mdio_disconnect(struct usb_interface *interface)
|
||||||
|
|
Loading…
Reference in New Issue