From: Johannes Berg <johannes.berg@xxxxxxxxx> When any interface goes down, it could be the one that we were doing off-channel with. Thus, we need to flush the offchannel start/stop work so they can't run when the interface has already been removed from the driver or even been destroyed. It's OK to flush them even if they were for another interface, that just means that we potentially delay the interface down a little bit. Cc: stable@xxxxxxxxxx [3.4] Reported-by: Nirav Shah <nirav.j2.shah@xxxxxxxxx> Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- net/mac80211/iface.c | 2 ++ 1 file changed, 2 insertions(+) --- a/net/mac80211/iface.c 2012-05-30 15:08:51.000000000 +0200 +++ b/net/mac80211/iface.c 2012-05-30 15:09:24.000000000 +0200 @@ -637,6 +637,8 @@ static void ieee80211_do_stop(struct iee ieee80211_configure_filter(local); break; default: + flush_work(&local->hw_roc_start); + flush_work(&local->hw_roc_done); flush_work(&sdata->work); /* * When we get here, the interface is marked down. -- 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