Thread (6 messages) 6 messages, 2 authors, 2026-02-25

Re: [PATCH net] net: mctp: usb: properly drop the usb interface on probe error

From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2026-02-24 06:18:28
Also in: lkml

On Tue, Feb 24, 2026 at 09:50:09AM +0800, Jeremy Kerr wrote:
Hi Greg,

On a second look:
quoted
diff --git a/drivers/net/mctp/mctp-usb.c b/drivers/net/mctp/mctp-usb.c
index ef860cfc629f..eef17ae89298 100644
--- a/drivers/net/mctp/mctp-usb.c
+++ b/drivers/net/mctp/mctp-usb.c
@@ -355,6 +355,7 @@ static int mctp_usb_probe(struct usb_interface *intf,
        usb_free_urb(dev->tx_urb);
        usb_free_urb(dev->rx_urb);
        free_netdev(netdev);
+       usb_put_dev(dev->usbdev);
        return rc;
 }
Should we not do the usb_put_dev() before the free_netdev()?
Why?  The usb_put_dev() doesn't really do anything, except for the fact
that you have to do it because you did a usb_get_dev() earlier.  In
reality, no USB driver needs to call get/put on a usb device at all,
that is a bad pattern I made years ago for no good reason, sorry about
that.

I really should just sweep the tree to fix that up one of these days,
odds are a coccinelle script can do that...
Given we're in NETREG_UNINITIALIZED state, we're likely to be
immediately freeing netdev there, which includes the netdev_priv data,
ie., dev.
That's great, but again, the usb device will still be around as the usb
core ensures that for the lifetime of probe/remove, the device will be
there with a reference.  So there's no real reason to put it anywhere in
this list, other than last as that mirrors when this was grabbed, right?

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help