Commit 1b91731d authored by Johannes Berg's avatar Johannes Berg

mac80211: fix tim_lock locking

The ieee80211_beacon_add_tim() function might be called
by drivers with BHs enabled, which causes a potential
deadlock if TX happens at the same time and attempts to
lock the tim_lock as well. Use spin_lock_bh to fix it.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent dc4a787c
...@@ -2360,9 +2360,9 @@ static int ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata, ...@@ -2360,9 +2360,9 @@ static int ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata,
if (local->tim_in_locked_section) { if (local->tim_in_locked_section) {
__ieee80211_beacon_add_tim(sdata, ps, skb); __ieee80211_beacon_add_tim(sdata, ps, skb);
} else { } else {
spin_lock(&local->tim_lock); spin_lock_bh(&local->tim_lock);
__ieee80211_beacon_add_tim(sdata, ps, skb); __ieee80211_beacon_add_tim(sdata, ps, skb);
spin_unlock(&local->tim_lock); spin_unlock_bh(&local->tim_lock);
} }
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment