We need to do tasklet_kill() on any tasklet on unregister to make sure the tasklet is not running _and_ scheduled anymore. (tasklet_disable() only ensures it's not running anymore). This fixes the tasklet related crash that was reported some time ago. Signed-off-by: Michael Buesch <mb@xxxxxxxxx> Index: bu3sch-wireless-dev/net/mac80211/ieee80211.c =================================================================== --- bu3sch-wireless-dev.orig/net/mac80211/ieee80211.c 2007-03-06 15:55:53.000000000 +0100 +++ bu3sch-wireless-dev/net/mac80211/ieee80211.c 2007-03-06 15:58:10.000000000 +0100 @@ -4761,8 +4761,8 @@ struct ieee80211_sub_if_data *sdata, *tmp; int i; - tasklet_disable(&local->tasklet); - /* TODO: skb_queue should be empty here, no need to do anything? */ + tasklet_kill(&local->tx_pending_tasklet); + tasklet_kill(&local->tasklet); rtnl_lock(); local->reg_state = IEEE80211_DEV_UNREGISTERED; -- Greetings Michael. - 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