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: mdio: mvusb: 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>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260309082641.15574-1-johan@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Johan Hovold and committed by
Jakub Kicinski
1a6ca649 07f56c8f

+2 -12
+2 -12
drivers/net/mdio/mdio-mvusb.c
··· 67 67 struct device *dev = &interface->dev; 68 68 struct mvusb_mdio *mvusb; 69 69 struct mii_bus *mdio; 70 - int ret; 71 70 72 71 mdio = devm_mdiobus_alloc_size(dev, sizeof(*mvusb)); 73 72 if (!mdio) ··· 74 75 75 76 mvusb = mdio->priv; 76 77 mvusb->mdio = mdio; 77 - mvusb->udev = usb_get_dev(interface_to_usbdev(interface)); 78 + mvusb->udev = interface_to_usbdev(interface); 78 79 79 80 /* Reversed from USB PCAPs, no idea what these mean. */ 80 81 mvusb->buf[MVUSB_CMD_PREAMBLE0] = cpu_to_le16(0xe800); ··· 87 88 mdio->write = mvusb_mdio_write; 88 89 89 90 usb_set_intfdata(interface, mvusb); 90 - ret = of_mdiobus_register(mdio, dev->of_node); 91 - if (ret) 92 - goto put_dev; 93 91 94 - return 0; 95 - 96 - put_dev: 97 - usb_put_dev(mvusb->udev); 98 - return ret; 92 + return of_mdiobus_register(mdio, dev->of_node); 99 93 } 100 94 101 95 static void mvusb_mdio_disconnect(struct usb_interface *interface) 102 96 { 103 97 struct mvusb_mdio *mvusb = usb_get_intfdata(interface); 104 - struct usb_device *udev = mvusb->udev; 105 98 106 99 mdiobus_unregister(mvusb->mdio); 107 100 usb_set_intfdata(interface, NULL); 108 - usb_put_dev(udev); 109 101 } 110 102 111 103 static struct usb_driver mvusb_mdio_driver = {