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>
This commit is contained in:
Luis R. Rodriguez 2013-11-05 09:18:13 -08:00 committed by Johannes Berg
parent 0e3802dbfe
commit db0e066a98
1 changed files with 3 additions and 3 deletions

View File

@ -2192,12 +2192,12 @@ static void print_regdomain_info(const struct ieee80211_regdomain *rd)
} }
/* Takes ownership of rd only if it doesn't fail */ /* 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 *regd;
const struct ieee80211_regdomain *intersected_rd = NULL; const struct ieee80211_regdomain *intersected_rd = NULL;
struct wiphy *request_wiphy; struct wiphy *request_wiphy;
struct regulatory_request *lr = get_last_request();
/* Some basic sanity checks first */ /* Some basic sanity checks first */
@ -2323,7 +2323,7 @@ int set_regdom(const struct ieee80211_regdomain *rd)
lr = get_last_request(); lr = get_last_request();
/* Note that this doesn't update the wiphys, this is done below */ /* 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) {
if (r == -EALREADY) if (r == -EALREADY)
reg_set_request_processed(); reg_set_request_processed();