original_kernel/net/mac80211
Johannes Berg bde59c475e mac80211: fix deadlock in driver-managed RX BA session start
When an RX BA session is started by the driver, and it has to tell
mac80211 about it, the corresponding bit in tid_rx_manage_offl gets
set and the BA session work is scheduled. Upon testing this bit, it
will call __ieee80211_start_rx_ba_session(), thus deadlocking as it
already holds the ampdu_mlme.mtx, which that acquires again.

Fix this by adding ___ieee80211_start_rx_ba_session(), a version of
the function that requires the mutex already held.

Cc: stable@vger.kernel.org
Fixes: 699cb58c8a ("mac80211: manage RX BA session offload without SKB queue")
Reported-by: Matteo Croce <mcroce@redhat.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2017-09-06 15:22:02 +02:00
..
Kconfig
Makefile
aes_ccm.c
aes_ccm.h
aes_cmac.c
aes_cmac.h
aes_gcm.c
aes_gcm.h
aes_gmac.c
aes_gmac.h
agg-rx.c mac80211: fix deadlock in driver-managed RX BA session start 2017-09-06 15:22:02 +02:00
agg-tx.c mac80211: agg-tx: call drv_wake_tx_queue in proper context 2017-09-05 16:25:07 +02:00
cfg.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
chan.c
debug.h
debugfs.c
debugfs.h
debugfs_key.c
debugfs_key.h
debugfs_netdev.c networking: convert many more places to skb_put_zero() 2017-06-16 11:48:35 -04:00
debugfs_netdev.h
debugfs_sta.c
debugfs_sta.h
driver-ops.c
driver-ops.h
ethtool.c
fils_aead.c
fils_aead.h
ht.c mac80211: fix deadlock in driver-managed RX BA session start 2017-09-06 15:22:02 +02:00
ibss.c networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
ieee80211_i.h mac80211: fix deadlock in driver-managed RX BA session start 2017-09-06 15:22:02 +02:00
iface.c mac80211: Fix null pointer dereference with iTXQ support 2017-09-05 11:28:51 +02:00
key.c
key.h
led.c
led.h
main.c
mesh.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
mesh.h
mesh_hwmp.c networking: convert many more places to skb_put_zero() 2017-06-16 11:48:35 -04:00
mesh_pathtbl.c
mesh_plink.c networking: convert many more places to skb_put_zero() 2017-06-16 11:48:35 -04:00
mesh_ps.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
mesh_sync.c
michael.c
michael.h
mlme.c mac80211: fix incorrect assignment of reassoc value 2017-09-05 09:04:20 +02:00
ocb.c
offchannel.c mac80211: flush hw_roc_start work before cancelling the ROC 2017-09-05 16:25:07 +02:00
pm.c
rate.c
rate.h
rc80211_minstrel.c
rc80211_minstrel.h
rc80211_minstrel_debugfs.c
rc80211_minstrel_ht.c
rc80211_minstrel_ht.h
rc80211_minstrel_ht_debugfs.c
rx.c networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
scan.c
spectmgmt.c networking: convert many more places to skb_put_zero() 2017-06-16 11:48:35 -04:00
sta_info.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
sta_info.h
status.c networking: make skb_push & __skb_push return void pointers 2017-06-16 11:48:40 -04:00
tdls.c net: manual clean code which call skb_put_[data:zero] 2017-06-20 13:30:15 -04:00
tkip.c
tkip.h
trace.c
trace.h
trace_msg.h
tx.c mac80211: fix VLAN handling with TXQs 2017-09-05 11:28:43 +02:00
util.c mac80211: add MESH IE in the correct order 2017-09-05 11:28:51 +02:00
vht.c
wep.c
wep.h
wme.c
wme.h
wpa.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
wpa.h