Commit 27c1eaa0 authored by Christophe JAILLET's avatar Christophe JAILLET Committed by David S. Miller
Browse files

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: 04e37d92 ("net: phy: add marvell usb to mdio controller")
Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 424f8416
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ static int mvusb_mdio_probe(struct usb_interface *interface,
	struct device *dev = &interface->dev;
	struct mvusb_mdio *mvusb;
	struct mii_bus *mdio;
	int ret;

	mdio = devm_mdiobus_alloc_size(dev, sizeof(*mvusb));
	if (!mdio)
@@ -87,7 +88,15 @@ static int mvusb_mdio_probe(struct usb_interface *interface,
	mdio->write = mvusb_mdio_write;

	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)