From: Andrew Morton We need to wait until any currently-running handler has completed. Fixes an unplug-time oops reported by "Miles Lane" . (akpm: I hope). Cc: "Petko Manolov" Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/usb/net/rtl8150.c | 1 + 1 file changed, 1 insertion(+) diff -puN drivers/usb/net/rtl8150.c~rtl8150_disconnect-needs-tasklet_kill drivers/usb/net/rtl8150.c --- a/drivers/usb/net/rtl8150.c~rtl8150_disconnect-needs-tasklet_kill +++ a/drivers/usb/net/rtl8150.c @@ -910,6 +910,7 @@ static void rtl8150_disconnect(struct us if (dev) { set_bit(RTL8150_UNPLUG, &dev->flags); tasklet_disable(&dev->tl); + tasklet_kill(&dev->tl); unregister_netdev(dev->netdev); unlink_all_urbs(dev); free_all_urbs(dev); _