Hello On Mon, May 30, 2011 at 08:25:37PM +0200, Ivo Van Doorn wrote: > On Sun, May 29, 2011 at 12:45 PM, Stanislaw Gruszka <stf_xl@xxxxx> wrote: > > Do not destroy workqueue, which still can be used by autowakeup_work, > > before ieee80211_unregister_hw() is called. > > Well isn't the bug then that autowakeup_work isn't cancelled using > cancel_work_sync > like the other workqueue tasks? > > I rather add the call to cancel_work_sync then moving the killing of > the workqueue. > The position where the workqueue is destroyed should be the place > where we cancel > all scheduled work, that way we can assume no rt2x00-related threads ater this > position. rt2x00lib_config() could be running simultaneously to rt2x00lib_remove_dev() and queue just canceled autowake_work again into (just destroyed) workqueue. Other solution to fix, would be use ieee80211_queue_work() instead of custom workqueue, is that better? 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