linux/net/mac80211
Johannes Berg 49ec6fa220 mac80211: fix possible sta-debugfs work lockup
Because we queue the sta-debugfs-adding work on our mac80211
workqueue (which needs to be flushed under RTNL) and that work
needs the RTNL, it can currently deadlock, thanks to Reinette
Chatre for pointing out the lockdep warning about this.

This patch fixes it by moving this work to the common kernel
workqueue (using schedule_work) and canceling it as appropriate.

It also fixes a related problem: When a STA is pinned by the
debugfs adding work and sta_info_flush() runs concurrently
it is not guaranteed that all STAs are removed from the driver
before the corresponding interface is removed which may lead
to bugs.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-04-08 16:44:41 -04:00
..
aes_ccm.c
aes_ccm.h
cfg.c mac80211: clean up sta_info_destroy() users wrt. RCU/locking 2008-04-01 17:14:10 -04:00
cfg.h
debugfs_key.c
debugfs_key.h
debugfs_netdev.c mac80211: fix deadlocks in debugfs_netdev.c 2008-04-01 17:14:11 -04:00
debugfs_netdev.h
debugfs_sta.c mac80211: A-MPDU MLME use dynamic allocation 2008-03-27 16:03:20 -04:00
debugfs_sta.h mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
debugfs.c
debugfs.h
event.c
ieee80211_i.h mac80211: eliminate conf_ht 2008-04-08 15:05:56 -04:00
ieee80211_iface.c mac80211: remove STA entries when taking down interface 2008-03-06 15:30:47 -05:00
ieee80211_ioctl.c mac80211: silently accept deletion of non-existant key 2008-03-27 15:51:20 -04:00
ieee80211_key.h mac80211: split ieee80211_key_alloc/free 2008-02-29 15:42:04 -05:00
ieee80211_led.c
ieee80211_led.h
ieee80211_rate.c mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
ieee80211_rate.h the scheduled rc80211-simple.c removal 2008-03-13 16:02:31 -04:00
ieee80211_sta.c mac80211: add association capabilty and timing info into bss_conf 2008-04-08 15:05:56 -04:00
ieee80211.c mac80211: eliminate conf_ht 2008-04-08 15:05:56 -04:00
Kconfig the scheduled rc80211-simple.c removal 2008-03-13 16:02:31 -04:00
key.c mac80211: sta_info_flush() fixes 2008-04-01 17:14:10 -04:00
Makefile the scheduled rc80211-simple.c removal 2008-03-13 16:02:31 -04:00
mesh_hwmp.c mac80211: path IE fields macros, fix alignment problems and clean up 2008-03-06 16:40:53 -05:00
mesh_pathtbl.c mac80211: fix mesh_path and sta_info get_by_idx functions 2008-03-06 16:40:54 -05:00
mesh_plink.c mac80211: automatically free sta struct when insertion fails 2008-04-01 17:14:10 -04:00
mesh.c Revert "mac80211: use a struct for bss->mesh_config" 2008-04-08 14:15:46 -04:00
mesh.h Revert "mac80211: use a struct for bss->mesh_config" 2008-04-08 14:15:46 -04:00
michael.c
michael.h
rc80211_pid_algo.c mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
rc80211_pid_debugfs.c
rc80211_pid.h
rx.c mac80211: use recent multicast table for all mesh multicast frames 2008-04-01 17:14:11 -04:00
sta_info.c mac80211: fix possible sta-debugfs work lockup 2008-04-08 16:44:41 -04:00
sta_info.h mac80211: fix spinlock recursion on sta expiration 2008-04-01 17:14:11 -04:00
tkip.c mac80211: allows driver to request a Phase 1 RX key 2008-03-25 16:41:53 -04:00
tkip.h mac80211: allows driver to request a Phase 1 RX key 2008-03-25 16:41:53 -04:00
tx.c mac80211: add station aid into ieee80211_tx_control 2008-04-08 15:05:57 -04:00
util.c mac80211: split ieee80211_txrx_data 2008-03-06 15:30:46 -05:00
wep.c mac80211: split ieee80211_txrx_data 2008-03-06 15:30:46 -05:00
wep.h mac80211: split ieee80211_txrx_data 2008-03-06 15:30:46 -05:00
wme.c mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
wme.h
wpa.c mac80211: allows driver to request a Phase 1 RX key 2008-03-25 16:41:53 -04:00
wpa.h mac80211: split ieee80211_txrx_data 2008-03-06 15:30:46 -05:00