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 cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
aes_ccm.h [MAC80211]: Add mac80211 wireless stack. 2007-05-05 11:45:53 -07:00
cfg.c mac80211: clean up sta_info_destroy() users wrt. RCU/locking 2008-04-01 17:14:10 -04:00
cfg.h [MAC80211]: rename ieee80211_cfg.h to cfg.h 2007-10-10 16:52:34 -07:00
debugfs_key.c [NET]: Introduce and use print_mac() and DECLARE_MAC_BUF() 2007-10-10 16:51:42 -07:00
debugfs_key.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
debugfs_netdev.c mac80211: fix deadlocks in debugfs_netdev.c 2008-04-01 17:14:11 -04:00
debugfs_netdev.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
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 cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
debugfs.h [MAC80211]: Add debugfs attributes. 2007-05-05 11:46:38 -07:00
event.c [NET]: Introduce and use print_mac() and DECLARE_MAC_BUF() 2007-10-10 16:51:42 -07:00
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 mac80211: Add radio led trigger 2008-01-28 15:01:04 -08:00
ieee80211_led.h mac80211: Add radio led trigger 2008-01-28 15:01:04 -08:00
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 [MAC80211]: Add mac80211 wireless stack. 2007-05-05 11:45:53 -07:00
michael.h [MAC80211]: Add mac80211 wireless stack. 2007-05-05 11:45:53 -07:00
rc80211_pid_algo.c mac80211: RCU-ify STA info structure access 2008-03-06 15:30:46 -05:00
rc80211_pid_debugfs.c mac80211: make rc_pid_fop_events static 2008-01-28 15:00:56 -08:00
rc80211_pid.h rc80211-pid: fix definition of rate control interval 2008-01-28 15:00:55 -08:00
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 mac80211: A-MPDU Tx adding qdisc support 2008-02-29 15:19:17 -05:00
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