From: Johannes Berg Date: Fri, 22 Feb 2013 11:55:01 +0000 (+0100) Subject: mac80211: fix tim_lock locking X-Git-Tag: v3.9-rc2~24^2~15^2^2~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b91731d23a3dd8e8d7e3ee21b8c6d6d4cde62c1;p=platform%2Fkernel%2Flinux-stable.git 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: Johannes Berg --- diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 5b9602b..5800c7a 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -2360,9 +2360,9 @@ static int ieee80211_beacon_add_tim(struct ieee80211_sub_if_data *sdata, if (local->tim_in_locked_section) { __ieee80211_beacon_add_tim(sdata, ps, skb); } else { - spin_lock(&local->tim_lock); + spin_lock_bh(&local->tim_lock); __ieee80211_beacon_add_tim(sdata, ps, skb); - spin_unlock(&local->tim_lock); + spin_unlock_bh(&local->tim_lock); } return 0;