On Fri, Mar 18, 2016 at 09:30:36AM +0100, Vishal Thanki wrote: > @@ -734,6 +744,8 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev) > { > struct data_queue *queue; > > + usb_kill_anchored_urbs(rt2x00dev->anchor); As already pointed in different email this is not good place either ... This should be placed in rt2x00lib_remove_dev() i.e: if (rt2x00_is_usb(rt2x00dev)) { usb_kill_anchored_urbs(rt2x00dev->anchor); hrtimer_cancel(&rt2x00dev->txstatus_timer); cancel_work_sync(&rt2x00dev->rxdone_work); cancel_work_sync(&rt2x00dev->txdone_work); } Since queues are flushed, hrtimer and works will not rearm, so this should be enough to stop the driver properly. Stanislaw -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html