From e307ed6ab5aa36de8b004477c6b4bb5111698661 Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Fri, 14 Sep 2012 15:36:57 -0700 Subject: [PATCH] --- yaml --- r: 323169 b: refs/heads/master c: a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 h: refs/heads/master i: 323167: abb72ff0c7879c4b37c3e2e5ac3985fcc4dd553c v: v3 --- [refs] | 2 +- trunk/net/wireless/reg.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 1312bce848ac..f168cbf0de3d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 78c04c0bf52360dc2f7185e99c8e9aa05d73ae5a +refs/heads/master: a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 diff --git a/trunk/net/wireless/reg.c b/trunk/net/wireless/reg.c index 2ded3c7fad06..72d170ca3406 100644 --- a/trunk/net/wireless/reg.c +++ b/trunk/net/wireless/reg.c @@ -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);