Commit f4ac0cc8 authored by Johan Hovold's avatar Johan Hovold Committed by Jakub Kicinski
Browse files

net: usb: lan78xx: drop redundant device reference



Driver core holds a reference to the USB interface and its parent USB
device while the interface is bound to a driver and there is no need to
take additional references unless the structures are needed after
disconnect.

Drop the redundant device reference to reduce cargo culting, make it
easier to spot drivers where an extra reference is needed, and reduce
the risk of memory leaks when drivers fail to release it.

Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260305105006.16415-1-johan@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent f67ab9d8
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -4530,7 +4530,6 @@ static void intr_complete(struct urb *urb)
static void lan78xx_disconnect(struct usb_interface *intf)
{
	struct lan78xx_net *dev;
	struct usb_device *udev;
	struct net_device *net;

	dev = usb_get_intfdata(intf);
@@ -4538,7 +4537,6 @@ static void lan78xx_disconnect(struct usb_interface *intf)
	if (!dev)
		return;

	udev = interface_to_usbdev(intf);
	net = dev->net;

	rtnl_lock();
@@ -4567,7 +4565,6 @@ static void lan78xx_disconnect(struct usb_interface *intf)
	usb_free_urb(dev->urb_intr);

	free_netdev(net);
	usb_put_dev(udev);
}

static void lan78xx_tx_timeout(struct net_device *net, unsigned int txqueue)
@@ -4629,13 +4626,11 @@ static int lan78xx_probe(struct usb_interface *intf,
	u8 *buf = NULL;

	udev = interface_to_usbdev(intf);
	udev = usb_get_dev(udev);

	netdev = alloc_etherdev(sizeof(struct lan78xx_net));
	if (!netdev) {
		dev_err(&intf->dev, "Error: OOM\n");
		ret = -ENOMEM;
		goto out1;
		return -ENOMEM;
	}

	SET_NETDEV_DEV(netdev, &intf->dev);
@@ -4784,8 +4779,6 @@ static int lan78xx_probe(struct usb_interface *intf,
	lan78xx_free_tx_resources(dev);
out2:
	free_netdev(netdev);
out1:
	usb_put_dev(udev);

	return ret;
}