Kaynağa Gözat

cfg80211: protect first access of last_request on 11d hint under mutex

We were not protecting last_request there is a small possible race
between an 11d hint and another routine which calls reset_regdomains()
which can prevent a valid country IE from being processed. This is
not critical as it will still be procesed soon after but locking prior
to it is correct.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Luis R. Rodriguez 16 yıl önce
ebeveyn
işleme
d335fe6391
1 değiştirilmiş dosya ile 5 ekleme ve 3 silme
  1. 5 3
      net/wireless/reg.c

+ 5 - 3
net/wireless/reg.c

@@ -1261,11 +1261,13 @@ void regulatory_hint_11d(struct wiphy *wiphy,
 	u32 checksum = 0;
 	enum environment_cap env = ENVIRON_ANY;
 
-	if (!last_request)
-		return;
-
 	mutex_lock(&cfg80211_mutex);
 
+	if (unlikely(!last_request)) {
+		mutex_unlock(&cfg80211_mutex);
+		return;
+	}
+
 	/* IE len must be evenly divisible by 2 */
 	if (country_ie_len & 0x01)
 		goto out;