cfg80211: Fix mutex locking in reg_last_request_cell_base
authorMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Wed, 18 Jul 2012 12:41:29 +0000 (18:11 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 18 Jul 2012 15:03:15 +0000 (17:03 +0200)
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>
net/wireless/reg.c

index dbb01df3aacb25ef193922ee60177a5b55d1708b..2303ee73b50ad2fc40dc136c9250861e9bb890ee 100644 (file)
@@ -929,11 +929,13 @@ static bool reg_request_cell_base(struct regulatory_request *request)
 
 bool reg_last_request_cell_base(void)
 {
+       bool val;
        assert_cfg80211_lock();
 
        mutex_lock(&reg_mutex);
-       return reg_request_cell_base(last_request);
+       val = reg_request_cell_base(last_request);
        mutex_unlock(&reg_mutex);
+       return val;
 }
 
 #ifdef CONFIG_CFG80211_CERTIFICATION_ONUS