mac80211: clean up remain-on-channel on interface stop
authorJohannes Berg <johannes.berg@intel.com>
Thu, 31 May 2012 13:09:27 +0000 (15:09 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 17 Jun 2012 18:23:10 +0000 (11:23 -0700)
commit55fe02e968371dd1c0b5b1f9411f2fc8c2b84e7e
tree6939af2e01bbb78ee67d1084df3cba308d385288
parent9bef1b2492b95dc848cbde1ad021efc355a0b350
mac80211: clean up remain-on-channel on interface stop

commit 71ecfa1893034eeb1c93e02e22ee2ad26d080858 upstream.

When any interface goes down, it could be the one that we
were doing a remain-on-channel with. We therefore need to
cancel the remain-on-channel and flush the related work
structs so they don't run after the interface has been
removed or even destroyed.

It's also possible in this case that an off-channel SKB
was never transmitted, so free it if this is the case.
Note that this can also happen if the driver finishes
the off-channel period without ever starting it.

Reported-by: Nirav Shah <nirav.j2.shah@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/mac80211/iface.c
net/mac80211/offchannel.c