Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260305105006.16415-1-johan@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Johan Hovold and committed by
Jakub Kicinski
f4ac0cc8 f67ab9d8

+1 -8
+1 -8
drivers/net/usb/lan78xx.c
··· 4530 4530 static void lan78xx_disconnect(struct usb_interface *intf) 4531 4531 { 4532 4532 struct lan78xx_net *dev; 4533 - struct usb_device *udev; 4534 4533 struct net_device *net; 4535 4534 4536 4535 dev = usb_get_intfdata(intf); ··· 4537 4538 if (!dev) 4538 4539 return; 4539 4540 4540 - udev = interface_to_usbdev(intf); 4541 4541 net = dev->net; 4542 4542 4543 4543 rtnl_lock(); ··· 4565 4567 usb_free_urb(dev->urb_intr); 4566 4568 4567 4569 free_netdev(net); 4568 - usb_put_dev(udev); 4569 4570 } 4570 4571 4571 4572 static void lan78xx_tx_timeout(struct net_device *net, unsigned int txqueue) ··· 4626 4629 u8 *buf = NULL; 4627 4630 4628 4631 udev = interface_to_usbdev(intf); 4629 - udev = usb_get_dev(udev); 4630 4632 4631 4633 netdev = alloc_etherdev(sizeof(struct lan78xx_net)); 4632 4634 if (!netdev) { 4633 4635 dev_err(&intf->dev, "Error: OOM\n"); 4634 - ret = -ENOMEM; 4635 - goto out1; 4636 + return -ENOMEM; 4636 4637 } 4637 4638 4638 4639 SET_NETDEV_DEV(netdev, &intf->dev); ··· 4779 4784 lan78xx_free_tx_resources(dev); 4780 4785 out2: 4781 4786 free_netdev(netdev); 4782 - out1: 4783 - usb_put_dev(udev); 4784 4787 4785 4788 return ret; 4786 4789 }