diff options
author | Michal Kazior | 2013-07-05 15:15:03 +0200 |
---|---|---|
committer | Kalle Valo | 2013-07-30 17:01:16 +0200 |
commit | 80c78c67e6660db46f0a6e60941386ce22863e24 (patch) | |
tree | 35f151211ee2654c17e72fb12c0bbb962091a7cd /drivers/net/wireless/ath/ath10k/mac.c | |
parent | ath10k: fix teardown ordering (diff) | |
download | kernel-qcow2-linux-80c78c67e6660db46f0a6e60941386ce22863e24.tar.gz kernel-qcow2-linux-80c78c67e6660db46f0a6e60941386ce22863e24.tar.xz kernel-qcow2-linux-80c78c67e6660db46f0a6e60941386ce22863e24.zip |
ath10k: fix possible deadlock
It was possible to have a deadlock due to inverted
locking of local->iflist_mtx and
ath10k->conf_mutex.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/mac.c')
-rw-r--r-- | drivers/net/wireless/ath/ath10k/mac.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index da5c333d0d4b..608e240cb56b 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -2581,8 +2581,9 @@ static int ath10k_set_rts_threshold(struct ieee80211_hw *hw, u32 value) ar_iter.ar = ar; mutex_lock(&ar->conf_mutex); - ieee80211_iterate_active_interfaces(hw, IEEE80211_IFACE_ITER_RESUME_ALL, - ath10k_set_rts_iter, &ar_iter); + ieee80211_iterate_active_interfaces_atomic( + hw, IEEE80211_IFACE_ITER_RESUME_ALL, + ath10k_set_rts_iter, &ar_iter); mutex_unlock(&ar->conf_mutex); return ar_iter.ret; @@ -2622,8 +2623,9 @@ static int ath10k_set_frag_threshold(struct ieee80211_hw *hw, u32 value) ar_iter.ar = ar; mutex_lock(&ar->conf_mutex); - ieee80211_iterate_active_interfaces(hw, IEEE80211_IFACE_ITER_RESUME_ALL, - ath10k_set_frag_iter, &ar_iter); + ieee80211_iterate_active_interfaces_atomic( + hw, IEEE80211_IFACE_ITER_RESUME_ALL, + ath10k_set_frag_iter, &ar_iter); mutex_unlock(&ar->conf_mutex); return ar_iter.ret; |