|
@@ -350,6 +350,9 @@ static void reg_regdb_search(struct work_struct *work)
|
|
|
struct reg_regdb_search_request *request;
|
|
|
const struct ieee80211_regdomain *curdom, *regdom;
|
|
|
int i, r;
|
|
|
+ bool set_reg = false;
|
|
|
+
|
|
|
+ mutex_lock(&cfg80211_mutex);
|
|
|
|
|
|
mutex_lock(®_regdb_search_mutex);
|
|
|
while (!list_empty(®_regdb_search_list)) {
|
|
@@ -365,9 +368,7 @@ static void reg_regdb_search(struct work_struct *work)
|
|
|
r = reg_copy_regd(®dom, curdom);
|
|
|
if (r)
|
|
|
break;
|
|
|
- mutex_lock(&cfg80211_mutex);
|
|
|
- set_regdom(regdom);
|
|
|
- mutex_unlock(&cfg80211_mutex);
|
|
|
+ set_reg = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -375,6 +376,11 @@ static void reg_regdb_search(struct work_struct *work)
|
|
|
kfree(request);
|
|
|
}
|
|
|
mutex_unlock(®_regdb_search_mutex);
|
|
|
+
|
|
|
+ if (set_reg)
|
|
|
+ set_regdom(regdom);
|
|
|
+
|
|
|
+ mutex_unlock(&cfg80211_mutex);
|
|
|
}
|
|
|
|
|
|
static DECLARE_WORK(reg_regdb_work, reg_regdb_search);
|