cfg80211: move mutex locking to reg_process_pending_hints()
Luis R. Rodriguez [Thu, 18 Nov 2010 05:46:08 +0000 (21:46 -0800)]
This will be required in the next patch and it makes the
next patch easier to review.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Tested-by: Mark Mentovai <mark@moxienet.com>
Tested-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

net/wireless/reg.c

index 3fa2474..b522c46 100644 (file)
@@ -1412,16 +1412,13 @@ static void reg_process_hint(struct regulatory_request *reg_request)
 
        BUG_ON(!reg_request->alpha2);
 
-       mutex_lock(&cfg80211_mutex);
-       mutex_lock(&reg_mutex);
-
        if (wiphy_idx_valid(reg_request->wiphy_idx))
                wiphy = wiphy_idx_to_wiphy(reg_request->wiphy_idx);
 
        if (reg_request->initiator == NL80211_REGDOM_SET_BY_DRIVER &&
            !wiphy) {
                kfree(reg_request);
-               goto out;
+               return;
        }
 
        r = __regulatory_hint(wiphy, reg_request);
@@ -1429,16 +1426,16 @@ static void reg_process_hint(struct regulatory_request *reg_request)
        if (r == -EALREADY && wiphy &&
            wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY)
                wiphy_update_regulatory(wiphy, initiator);
-out:
-       mutex_unlock(&reg_mutex);
-       mutex_unlock(&cfg80211_mutex);
 }
 
 /* Processes regulatory hints, this is all the NL80211_REGDOM_SET_BY_* */
 static void reg_process_pending_hints(void)
-       {
+{
        struct regulatory_request *reg_request;
 
+       mutex_lock(&cfg80211_mutex);
+       mutex_lock(&reg_mutex);
+
        spin_lock(&reg_requests_lock);
        while (!list_empty(&reg_requests_list)) {
                reg_request = list_first_entry(&reg_requests_list,
@@ -1451,6 +1448,9 @@ static void reg_process_pending_hints(void)
                spin_lock(&reg_requests_lock);
        }
        spin_unlock(&reg_requests_lock);
+
+       mutex_unlock(&reg_mutex);
+       mutex_unlock(&cfg80211_mutex);
 }
 
 /* Processes beacon hints -- this has nothing to do with country IEs */