From 5546c5f660b253848099bf1166ba700dd14b453c Mon Sep 17 00:00:00 2001 From: "Luis R. Rodriguez" Date: Wed, 13 May 2009 17:04:41 -0400 Subject: [PATCH] --- yaml --- r: 150409 b: refs/heads/master c: 61405e97788b1bc4e7c5be5b4ec04a73fc11bac2 h: refs/heads/master i: 150407: 9efd1ef763c2b8c6bb6ac6eb9e3960769d6ef15e v: v3 --- [refs] | 2 +- trunk/net/wireless/nl80211.c | 5 ++++- trunk/net/wireless/reg.c | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 142f514f28e3..11c25fd20d5f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d0e18f833d23afefb6751a21d14a2cd71d2d4d66 +refs/heads/master: 61405e97788b1bc4e7c5be5b4ec04a73fc11bac2 diff --git a/trunk/net/wireless/nl80211.c b/trunk/net/wireless/nl80211.c index 66e0fb6a6420..632504060789 100644 --- a/trunk/net/wireless/nl80211.c +++ b/trunk/net/wireless/nl80211.c @@ -2570,6 +2570,8 @@ static int nl80211_set_reg(struct sk_buff *skb, struct genl_info *info) return -EINVAL; } + mutex_lock(&cfg80211_mutex); + if (!reg_is_valid_request(alpha2)) { r = -EINVAL; goto bad_reg; @@ -2607,13 +2609,14 @@ static int nl80211_set_reg(struct sk_buff *skb, struct genl_info *info) BUG_ON(rule_idx != num_rules); - mutex_lock(&cfg80211_mutex); r = set_regdom(rd); + mutex_unlock(&cfg80211_mutex); return r; bad_reg: + mutex_unlock(&cfg80211_mutex); kfree(rd); return r; } diff --git a/trunk/net/wireless/reg.c b/trunk/net/wireless/reg.c index 48db569d4c6b..8d176a8010ba 100644 --- a/trunk/net/wireless/reg.c +++ b/trunk/net/wireless/reg.c @@ -382,6 +382,8 @@ static int call_crda(const char *alpha2) /* Used by nl80211 before kmalloc'ing our regulatory domain */ bool reg_is_valid_request(const char *alpha2) { + assert_cfg80211_lock(); + if (!last_request) return false;