Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db0e066a authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by Johannes Berg
Browse files

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: default avatarLuis R. Rodriguez <mcgrof@do-not-panic.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 0e3802db
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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();