linux/net/mac80211
Johannes Berg bc4934bc61 mac80211: fix work removal on deauth request
When deauth is requested while an auth or assoc
work item is in progress, we currently delete it
without regard for any state it might need to
clean up. Fix it by cleaning up for those items.

In the case Pontus found, the problem manifested
itself as such:

authenticate with 00:23:69:aa:dd:7b (try 1)
authenticated
failed to insert Dummy STA entry for the AP (error -17)
deauthenticating from 00:23:69:aa:dd:7b by local choice (reason=2)

It could also happen differently if the driver
uses the tx_sync callback.

We can't just call the ->done() method of the work
items because that will lock up due to the locking
in cfg80211. This fix isn't very clean, but that
seems acceptable since I have patches pending to
remove this code completely.

Cc: stable@vger.kernel.org
Reported-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Tested-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-01-18 14:38:06 -05:00
..
aes_ccm.c mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_ccm.h mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_cmac.c mac80211: use AES_BLOCK_SIZE 2011-07-08 11:11:24 -04:00
aes_cmac.h mac80211: fix CMAC races 2011-07-08 11:11:20 -04:00
agg-rx.c net: reintroduce missing rcu_assign_pointer() calls 2012-01-12 12:26:56 -08:00
agg-tx.c mac80211: split addba retries in time 2011-12-19 14:31:37 -05:00
cfg.c mac80211: fix no-op authorized transitions 2012-01-13 14:40:58 -05:00
cfg.h
chan.c mac80211: fix channel type recalculation with HT and non-HT interfaces 2011-03-14 14:46:58 -04:00
debugfs_key.c mac80211: fix debugfs key->station symlink 2012-01-18 14:38:05 -05:00
debugfs_key.h mac80211: support separate default keys 2010-12-13 15:23:29 -05:00
debugfs_netdev.c mac80211: count authorized stations per BSS 2011-12-15 14:46:34 -05:00
debugfs_netdev.h
debugfs_sta.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2011-12-02 15:44:03 -05:00
debugfs_sta.h
debugfs.c mac80211: remove debugfs noack test 2011-11-28 14:34:15 -05:00
debugfs.h mac80211: refactor debugfs function generation code 2010-11-15 13:24:48 -05:00
driver-ops.h mac80211: do not pass AP VLAN vif pointers to drivers 2011-11-28 14:43:52 -05:00
driver-trace.c
driver-trace.h mac80211: remove tracing config symbol 2011-11-28 14:44:09 -05:00
event.c
ht.c mac80211: Use appropriate TID for sending BAR, ADDBA and DELBA frames 2011-12-15 14:46:35 -05:00
ibss.c net: reintroduce missing rcu_assign_pointer() calls 2012-01-12 12:26:56 -08:00
ieee80211_i.h mac80211: remove dead code 2012-01-04 14:31:47 -05:00
iface.c mac80211: refactor station state transitions 2011-12-15 14:46:34 -05:00
Kconfig mac80211: remove tracing config symbol 2011-11-28 14:44:09 -05:00
key.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-11-22 14:05:46 -05:00
key.h mac80211: allow driver to disconnect after resume 2011-07-13 14:49:43 -04:00
led.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
led.h mac80211: selective throughput LED trigger active 2010-12-22 14:33:37 -05:00
main.c mac80211: don't check sdata_running in vif notifier 2011-12-13 15:34:15 -05:00
Makefile mac80211: remove tracing config symbol 2011-11-28 14:44:09 -05:00
mesh_hwmp.c mac80211: Use the right headroom size for mesh mgmt frames 2012-01-18 14:38:06 -05:00
mesh_pathtbl.c mac80211: don't initiate path discovery when forwarding frame with unknown DA 2011-11-28 14:44:07 -05:00
mesh_plink.c mac80211: Use the right headroom size for mesh mgmt frames 2012-01-18 14:38:06 -05:00
mesh.c {nl,cfg,mac}80211: implement dot11MeshHWMPperrMinInterval 2011-11-28 14:44:06 -05:00
mesh.h mac80211: don't initiate path discovery when forwarding frame with unknown DA 2011-11-28 14:44:07 -05:00
michael.c
michael.h
mlme.c mac80211: fix work removal on deauth request 2012-01-18 14:38:06 -05:00
offchannel.c mac80211: remove dead code 2012-01-04 14:31:47 -05:00
pm.c mac80211: verify virtual interfaces in driver API 2011-11-09 16:01:02 -05:00
rate.c net: Fix files explicitly needing to include module.h 2011-10-31 19:30:28 -04:00
rate.h
rc80211_minstrel_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_minstrel_ht_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_minstrel_ht.c minstrel_ht: Remove unused function parameters 2011-11-17 15:43:58 -05:00
rc80211_minstrel_ht.h minstrel_ht: move minstrel_mcs_groups declaration to header file 2010-06-24 15:42:18 -04:00
rc80211_minstrel.c minstrel: Remove unused function parameter in calc_rate_durations() 2011-11-11 12:32:52 -05:00
rc80211_minstrel.h minstrel_ht: fixed rate mode through debugfs 2011-06-01 15:12:29 -04:00
rc80211_pid_algo.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
rc80211_pid_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_pid.h Fix common misspellings 2011-03-31 11:26:23 -03:00
rx.c Net, mac80211: Fix resource leak in ieee80211_rx_h_mesh_fwding() 2012-01-16 15:01:15 -05:00
scan.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem 2012-01-05 10:13:24 -05:00
spectmgmt.c mac80211: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
sta_info.c mac80211: Fix possible race between sta_unblock and network softirq 2012-01-17 10:12:27 -05:00
sta_info.h cfg80211: Return beacon loss count in station 2011-12-19 14:34:13 -05:00
status.c mac80211: Make use of ieee80211_is_* functions in tx status path 2011-12-13 15:30:46 -05:00
tkip.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
tkip.h mac80211: fix TKIP races, make API easier to use 2011-07-08 11:11:19 -04:00
tx.c mac80211: fix tx->skb NULL pointer dereference 2012-01-16 15:01:16 -05:00
util.c mac80211: Call driver commands after drv_start in mac80211 restart code 2012-01-04 14:31:46 -05:00
wep.c mac80211: use skb list for fragments 2011-11-21 16:20:42 -05:00
wep.h mac80211: remove the dependency on crypto_blkcipher 2011-04-04 16:20:00 -04:00
wme.c mac80211: fix forwarded mesh frame queue mapping 2011-11-28 14:44:05 -05:00
wme.h mac80211: fix forwarded mesh frame queue mapping 2011-11-28 14:44:05 -05:00
work.c mac80211: revert on-channel work optimisations 2011-11-30 15:08:31 -05:00
wpa.c mac80211: fix tx->skb NULL pointer dereference 2012-01-16 15:01:16 -05:00
wpa.h mac80211: fix tx->skb NULL pointer dereference 2012-01-16 15:01:16 -05:00