diff options
author | Luis R. Rodriguez <mcgrof@do-not-panic.com> | 2013-11-05 09:18:13 -0800 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-11-25 20:51:28 +0100 |
commit | db0e066a986e025781dcd4c05dc4cf480ae884b6 (patch) | |
tree | 838bc7a9ae5d8eab4af33894e3ceb28c239c01a9 /net/wireless | |
parent | 0e3802dbfe53bc27a6bf019d022d743349a8d67d (diff) |
cfg80211: pass the last_request to __set_regdom()
last_request is RCU protected, since we're getting it
on set_regdom() we might as well pass it to ensure the
same request is being processed, otherwise there is a
small race it could have changed. This makes processing
of the request atomic.
Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/reg.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/wireless/reg.c b/net/wireless/reg.c index 38c252f91086..ca11f31b3bec 100644 --- a/net/wireless/reg.c +++ b/net/wireless/reg.c @@ -2192,12 +2192,12 @@ static void print_regdomain_info(const struct ieee80211_regdomain *rd) } /* Takes ownership of rd only if it doesn't fail */ -static int __set_regdom(const struct ieee80211_regdomain *rd) +static int __set_regdom(const struct ieee80211_regdomain *rd, + struct regulatory_request *lr) { const struct ieee80211_regdomain *regd; const struct ieee80211_regdomain *intersected_rd = NULL; struct wiphy *request_wiphy; - struct regulatory_request *lr = get_last_request(); /* Some basic sanity checks first */ @@ -2323,7 +2323,7 @@ int set_regdom(const struct ieee80211_regdomain *rd) lr = get_last_request(); /* Note that this doesn't update the wiphys, this is done below */ - r = __set_regdom(rd); + r = __set_regdom(rd, lr); if (r) { if (r == -EALREADY) reg_set_request_processed(); |