diff options
author | Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | 2012-07-18 08:41:29 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-07-18 11:03:15 -0400 |
commit | ebd0fd2b1a30aa836c28e758d8a57ecdfa85052f (patch) | |
tree | 0459843c65d4fd3b28647da97cd37549f69f423d | |
parent | 88bc40e8c3d3bca7d26c756bb0b823d4abad3355 (diff) |
cfg80211: Fix mutex locking in reg_last_request_cell_base
should fix the following issue
[ 3229.815012] [ BUG: lock held when returning to user space! ]
[ 3229.815016] 3.5.0-rc7-wl #28 Tainted: G W O
[ 3229.815017]
------------------------------------------------
[ 3229.815019] wpa_supplicant/5783 is leaving the kernel with locks still held!
[ 3229.815022] 1 lock held by wpa_supplicant/5783:
[ 3229.815023] #0: (reg_mutex){+.+.+.}, at: [<fa65834d>]
reg_last_request_cell_base+0x1d/0x60 [cfg80211]
Cc: Luis Rodriguez <mcgrof@gmail.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Tested-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/wireless/reg.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index dbb01df3aacb..2303ee73b50a 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c | |||
@@ -929,11 +929,13 @@ static bool reg_request_cell_base(struct regulatory_request *request) | |||
929 | 929 | ||
930 | bool reg_last_request_cell_base(void) | 930 | bool reg_last_request_cell_base(void) |
931 | { | 931 | { |
932 | bool val; | ||
932 | assert_cfg80211_lock(); | 933 | assert_cfg80211_lock(); |
933 | 934 | ||
934 | mutex_lock(®_mutex); | 935 | mutex_lock(®_mutex); |
935 | return reg_request_cell_base(last_request); | 936 | val = reg_request_cell_base(last_request); |
936 | mutex_unlock(®_mutex); | 937 | mutex_unlock(®_mutex); |
938 | return val; | ||
937 | } | 939 | } |
938 | 940 | ||
939 | #ifdef CONFIG_CFG80211_CERTIFICATION_ONUS | 941 | #ifdef CONFIG_CFG80211_CERTIFICATION_ONUS |