]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: cfg80211: Fix use_for flag update on BSS refresh
authorHuang Chenming <chenming.huang@oss.qualcomm.com>
Tue, 9 Dec 2025 02:57:33 +0000 (08:27 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 8 Jan 2026 12:23:08 +0000 (13:23 +0100)
Userspace may fail to connect to certain BSS that were initially
marked as unusable due to regulatory restrictions (use_for = 0,
e.g., 6 GHz power type mismatch). Even after these restrictions
are removed and the BSS becomes usable, connection attempts still
fail.

The issue occurs in cfg80211_update_known_bss() where the use_for
flag is updated using bitwise AND (&=) instead of direct assignment.
Once a BSS is marked with use_for = 0, the AND operation masks out
any subsequent non-zero values, permanently keeping the flag at 0.
This causes __cfg80211_get_bss(), invoked by nl80211_assoc_bss(), to
fail the check "(bss->pub.use_for & use_for) != use_for", thereby
blocking association.

Replace the bitwise AND operation with direct assignment so the use_for
flag accurately reflects the current BSS state.

Fixes: d02a12b8e4bb ("wifi: cfg80211: add BSS usage reporting")
Signed-off-by: Huang Chenming <chenming.huang@oss.qualcomm.com>
Link: https://patch.msgid.link/20251209025733.2098456-1-chenming.huang@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/scan.c

index 7546647752fd8f596c749acd6abaf469ff602fe2..eb0e77813d466fd80ebdbfac0627bc82499c1f98 100644 (file)
@@ -1959,7 +1959,7 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev,
        ether_addr_copy(known->parent_bssid, new->parent_bssid);
        known->pub.max_bssid_indicator = new->pub.max_bssid_indicator;
        known->pub.bssid_index = new->pub.bssid_index;
-       known->pub.use_for &= new->pub.use_for;
+       known->pub.use_for = new->pub.use_for;
        known->pub.cannot_use_reasons = new->pub.cannot_use_reasons;
        known->bss_source = new->bss_source;