diff options
Diffstat (limited to 'drivers/net/usb/usbnet.c')
| -rw-r--r-- | drivers/net/usb/usbnet.c | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c index 0b0ba7ef14e4..10798128c03f 100644 --- a/drivers/net/usb/usbnet.c +++ b/drivers/net/usb/usbnet.c @@ -1769,6 +1769,13 @@ out3:  	if (info->unbind)  		info->unbind (dev, udev);  out1: +	/* subdrivers must undo all they did in bind() if they +	 * fail it, but we may fail later and a deferred kevent +	 * may trigger an error resubmitting itself and, worse, +	 * schedule a timer. So we kill it all just in case. +	 */ +	cancel_work_sync(&dev->kevent); +	del_timer_sync(&dev->delay);  	free_netdev(net);  out:  	return status; | 
