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:
parent
0e3802dbfe
commit
db0e066a98
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue