linux/net/mac80211
Simon Wunderlich beffd138d3 mac80211: don't cancel csa finalize work within stop_ap
The current channel switch code has a potential deadlock:
1) * cfg80211_stop_ap acquires wdev-lock
   * ieee80211_stop_ap calls cancel_work_sync for the csa_finalize_work,
     which acquires the associated worker-lock
2) * ieee80211_csa_finalize_work holds the worker-lock when run
   * it calls cfg80211_ch_switch_notify which will claim the wdev-lock,
     and also needs to claim the sdata-lock (which is the same as the
     wdev-lock) to modify the beacons.

It is sufficient to just set the channel switch active to false. If the
worker is running later, it will find the channel switch to not be
active anymore and returns immediately without changing anything.

Canceling the worker is done anyway when the interface goes down
(ieee80211_do_stop).

Reported-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2013-12-02 11:51:54 +01:00
..
aes_ccm.c mac80211: port CCMP to cryptoapi's CCM driver 2013-10-11 15:38:20 +02:00
aes_ccm.h mac80211: port CCMP to cryptoapi's CCM driver 2013-10-11 15:38:20 +02:00
aes_cmac.c mac80211: include export.h in aes_cmac 2012-11-07 18:01:54 +01:00
aes_cmac.h mac80211: fix CMAC races 2011-07-08 11:11:20 -04:00
agg-rx.c mac80211: improve aggregation debug messages 2013-01-18 21:55:15 +01:00
agg-tx.c mac80211: fix aggregation state with current drivers 2013-01-24 15:43:51 +01:00
cfg.c mac80211: don't cancel csa finalize work within stop_ap 2013-12-02 11:51:54 +01:00
cfg.h
chan.c mac80211: add min required channel definition field 2013-11-25 20:52:05 +01:00
debug.h mac80211: process the CSA frame for mesh accordingly 2013-10-28 15:05:28 +01:00
debugfs_key.c mac80211: move sdata debugfs dir to vif 2013-03-18 20:10:04 +01:00
debugfs_key.h mac80211: support separate default keys 2010-12-13 15:23:29 -05:00
debugfs_netdev.c mac80211: implement SMPS for AP 2013-10-28 15:05:11 +01:00
debugfs_netdev.h
debugfs_sta.c mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
debugfs_sta.h
debugfs.c mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
debugfs.h mac80211: use __printf attribute in debugfs 2012-10-18 09:01:57 +02:00
driver-ops.h mac80211: add explicit IBSS driver operations 2013-10-01 12:17:45 +02:00
event.c
ht.c mac80211: implement SMPS for AP 2013-10-28 15:05:11 +01:00
ibss.c mac80211: move csa_chandef to sdata 2013-11-25 20:51:58 +01:00
ieee80211_i.h mac80211: modify beacon using sdata/wdev-lock, not rtnl lock 2013-12-02 11:51:53 +01:00
iface.c mac80211: remove sta_info_flush() from interface teardown 2013-12-02 11:51:50 +01:00
Kconfig mac80211: process the CSA frame for mesh accordingly 2013-10-28 15:05:28 +01:00
key.c mac80211: add generic cipher scheme support 2013-11-25 20:50:52 +01:00
key.h mac80211: add generic cipher scheme support 2013-11-25 20:50:52 +01:00
led.c mac80211: use oneshot blink API for LED triggers 2013-08-01 10:48:49 +02:00
led.h mac80211: use oneshot blink API for LED triggers 2013-08-01 10:48:49 +02:00
main.c mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
Makefile mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
mesh_hwmp.c mac80211: use put_unaligned_le in mesh when necessary 2013-11-25 20:51:55 +01:00
mesh_pathtbl.c mac80211: use put_unaligned_le in mesh when necessary 2013-11-25 20:51:55 +01:00
mesh_plink.c mac80211: use put_unaligned_le16 in mesh_plink_frame_tx 2013-11-25 20:51:53 +01:00
mesh_ps.c mac80211: use put_unaligned_le16 in mesh_plink_frame_tx 2013-11-25 20:51:53 +01:00
mesh_sync.c mac80211: mesh: only get tsf if we need it 2013-12-02 11:51:52 +01:00
mesh.c mac80211: move csa_chandef to sdata 2013-11-25 20:51:58 +01:00
mesh.h mac80211: use put_unaligned_le in mesh when necessary 2013-11-25 20:51:55 +01:00
michael.c
michael.h
mlme.c mac80211: update ht flag if bss configuration changed 2013-12-02 11:51:51 +01:00
offchannel.c mac80211: Run deferred scan if last roc_list item is not started 2013-09-30 12:36:56 +02:00
pm.c mac80211: fix monitor interface suspend crash regression 2013-07-23 14:02:08 +02:00
rate.c mac80211: respect rate mask in TX 2013-10-15 15:16:29 +02:00
rate.h mac80211/rc80211: add chandef to rate initialization 2013-07-16 09:58:02 +03:00
rc80211_minstrel_debugfs.c mac80211: cosmetics for minstrel_debugfs 2013-04-17 17:08:23 +02:00
rc80211_minstrel_ht_debugfs.c mac80211: minstrel_ht: replace some occurences of MCS_GROUP_RATES 2013-11-25 20:52:07 +01:00
rc80211_minstrel_ht.c mac80211: minstrel_ht: do not sample unsupported rates 2013-11-25 20:52:21 +01:00
rc80211_minstrel_ht.h mac80211/minstrel_ht: use the new rate control API 2013-04-22 16:16:41 +02:00
rc80211_minstrel.c mac80211: minstrels: spare numerous useless calls to get_random_bytes 2013-11-25 20:52:09 +01:00
rc80211_minstrel.h mac80211/minstrel: use the new rate control API 2013-04-22 16:16:41 +02:00
rc80211_pid_algo.c mac80211/rc80211: add chandef to rate initialization 2013-07-16 09:58:02 +03:00
rc80211_pid_debugfs.c mac80211: fix some snprintf misuses 2013-10-01 12:16:51 +02:00
rc80211_pid.h Fix common misspellings 2011-03-31 11:26:23 -03:00
rx.c mac80211: use put_unaligned_le in mesh when necessary 2013-11-25 20:51:55 +01:00
scan.c cfg80211: consolidate passive-scan and no-ibss flags 2013-11-25 20:49:35 +01:00
spectmgmt.c mac80211: process mesh channel switching using beacon 2013-10-28 15:05:30 +01:00
sta_info.c mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
sta_info.h mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
status.c mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
tkip.c mac80211: use just spin_lock() in ieee80211_get_tkip_p2k() 2013-05-16 22:38:06 +02:00
tkip.h mac80211: fix TKIP races, make API easier to use 2011-07-08 11:11:19 -04:00
trace.c mac80211: trace debug messages 2012-06-24 11:33:18 +02:00
trace.h mac80211: add min required channel definition field 2013-11-25 20:52:05 +01:00
tx.c mac80211: Tx frame latency statistics 2013-12-02 11:51:50 +01:00
util.c mac80211: add min required channel definition field 2013-11-25 20:52:05 +01:00
vht.c mac80211: enable easier manipulation of VHT beamforming caps 2013-11-25 20:52:01 +01:00
wep.c wireless: move crypto constants to ieee80211.h 2013-05-16 22:39:41 +02:00
wep.h mac80211: move RX WEP weak IV counting 2012-03-13 14:54:16 -04:00
wme.c mac80211: mesh power save basics 2013-02-04 18:57:47 +01:00
wme.h mac80211: save wmm_acm per sdata 2012-06-20 17:35:22 +02:00
wpa.c mac80211: add generic cipher scheme support 2013-11-25 20:50:52 +01:00
wpa.h mac80211: add generic cipher scheme support 2013-11-25 20:50:52 +01:00