diff mbox

[1/1] drivers/net/usb/usbnet.c: No need for usb_free_urb in rx_complete

Message ID 1315071353-14978-1-git-send-email-consul.kautuk@gmail.com
State Rejected, archived
Delegated to: David Miller
Headers show

Commit Message

Kautuk Consul Sept. 3, 2011, 5:35 p.m. UTC
usb_hcd_giveback_urb frees the urb irrespective of any return
value from the urb->complete function. It calls usb_put_urb which 
is #defined to usb_free_urb, so maybe we shouldn't be freeing this 
from rx_complete.

But I can't get around the fact that this has not been detected as a problem 
till now, so I could be quite wrong about this. :)

Signed-off-by: Kautuk Consul <consul.kautuk@gmail.com>
---
 drivers/net/usb/usbnet.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

Comments

Alan Stern Sept. 3, 2011, 8:02 p.m. UTC | #1
On Sat, 3 Sep 2011, Kautuk Consul wrote:

> usb_hcd_giveback_urb frees the urb irrespective of any return
> value from the urb->complete function. It calls usb_put_urb which 
> is #defined to usb_free_urb, so maybe we shouldn't be freeing this 
> from rx_complete.

usb_free_urb() doesn't free its argument unless the refcount drops to 
0.  The refcount is incremented during usb_hcd_submit_urb(), and the 
decrement during usb_hcd_giveback_urb() merely undoes this increment.

> But I can't get around the fact that this has not been detected as a problem 
> till now, so I could be quite wrong about this. :)

Quite probably.  :-)

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index ce395fe..6df8094 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -491,7 +491,6 @@  block:
 			rx_submit (dev, urb, GFP_ATOMIC);
 			return;
 		}
-		usb_free_urb (urb);
 	}
 	netif_dbg(dev, rx_err, dev->net, "no read resubmitted\n");
 }