summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChenming Huang <quic_chenhuan@quicinc.com>2024-09-23 07:46:44 +0530
committerJohannes Berg <johannes.berg@intel.com>2024-10-08 21:15:51 +0200
commite1a9ae3a73810c00e492485fdbae09f0dccb057e (patch)
tree3397991336d4ce8f4d0780aa956edaa2c4f0b9a9
parent8dd0498983eef524a8d104eb8abb32ec4c595bec (diff)
downloadlinux-e1a9ae3a73810c00e492485fdbae09f0dccb057e.tar.gz
linux-e1a9ae3a73810c00e492485fdbae09f0dccb057e.tar.bz2
linux-e1a9ae3a73810c00e492485fdbae09f0dccb057e.zip
wifi: cfg80211: Do not create BSS entries for unsupported channels
Currently, in cfg80211_parse_ml_elem_sta_data(), when RNR element indicates a BSS that operates in a channel that current regulatory domain doesn't support, a NULL value is returned by ieee80211_get_channel_khz() and assigned to this BSS entry's channel field. Later in cfg80211_inform_single_bss_data(), the reported BSS entry's channel will be wrongly overridden by transmitted BSS's. This could result in connection failure that when wpa_supplicant tries to select this reported BSS entry while it actually resides in an unsupported channel. Since this channel is not supported, it is reasonable to skip such entries instead of reporting wrong information. Signed-off-by: Chenming Huang <quic_chenhuan@quicinc.com> Link: https://patch.msgid.link/20240923021644.12885-1-quic_chenhuan@quicinc.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/wireless/scan.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index 59a90bf3c0d6..d0aed41ded2f 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -3050,6 +3050,10 @@ cfg80211_parse_ml_elem_sta_data(struct wiphy *wiphy,
freq = ieee80211_channel_to_freq_khz(ap_info->channel, band);
data.channel = ieee80211_get_channel_khz(wiphy, freq);
+ /* Skip if RNR element specifies an unsupported channel */
+ if (!data.channel)
+ continue;
+
/* Skip if BSS entry generated from MBSSID or DIRECT source
* frame data available already.
*/