1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

mac80211: fix regdb locking issues

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33398 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd
2012-09-14 13:37:30 +00:00
parent 7db7c73ad4
commit 697af1c08d
2 changed files with 37 additions and 2 deletions

View File

@@ -327,3 +327,38 @@
priv->tsf_high32 = 0;
priv->tsf_low32 = 0;
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -352,6 +352,9 @@ static void reg_regdb_search(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(&reg_regdb_search_mutex);
while (!list_empty(&reg_regdb_search_list)) {
@@ -367,9 +370,7 @@ static void reg_regdb_search(struct work
r = reg_copy_regd(&regdom, curdom);
if (r)
break;
- mutex_lock(&cfg80211_mutex);
- set_regdom(regdom);
- mutex_unlock(&cfg80211_mutex);
+ set_reg = true;
break;
}
}
@@ -377,6 +378,11 @@ static void reg_regdb_search(struct work
kfree(request);
}
mutex_unlock(&reg_regdb_search_mutex);
+
+ if (set_reg)
+ set_regdom(regdom);
+
+ mutex_unlock(&cfg80211_mutex);
}
static DECLARE_WORK(reg_regdb_work, reg_regdb_search);