diff options
Diffstat (limited to 'drivers/net/usb/usbnet.c')
| -rw-r--r-- | drivers/net/usb/usbnet.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index aaa89b4cfd50..e368b0780753 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -1598,6 +1598,7 @@ void usbnet_disconnect (struct usb_interface *intf)  	struct usbnet		*dev;  	struct usb_device	*xdev;  	struct net_device	*net; +	struct urb		*urb;  	dev = usb_get_intfdata(intf);  	usb_set_intfdata(intf, NULL); @@ -1614,7 +1615,11 @@ void usbnet_disconnect (struct usb_interface *intf)  	net = dev->net;  	unregister_netdev (net); -	usb_scuttle_anchored_urbs(&dev->deferred); +	while ((urb = usb_get_from_anchor(&dev->deferred))) { +		dev_kfree_skb(urb->context); +		kfree(urb->sg); +		usb_free_urb(urb); +	}  	if (dev->driver_info->unbind)  		dev->driver_info->unbind(dev, intf);  | 
