-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
brcmfmac: Fix wpa_supplicent >= 2.11 (#29)
- Loading branch information
1 parent
80f46ec
commit e111380
Showing
1 changed file
with
46 additions
and
0 deletions.
There are no files selected for viewing
46 changes: 46 additions & 0 deletions
46
9001-wifi-brcmfmac-cfg80211-Handle-SSID-based-pmksa-deletion.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
From: Janne Grunau via B4 Relay <[email protected]> | ||
Subject: [PATCH] wifi: brcmfmac: cfg80211: Handle SSID based pmksa deletion | ||
Date: Sat, 03 Aug 2024 21:52:55 +0200 | ||
|
||
From: Janne Grunau <[email protected]> | ||
|
||
wpa_supplicant 2.11 sends since 1efdba5fdc2c ("Handle PMKSA flush in the | ||
driver for SAE/OWE offload cases") SSID based PMKSA del commands. | ||
brcmfmac is not prepared and tries to dereference the NULL bssid and | ||
pmkid pointers in cfg80211_pmksa. PMKID_V3 operations support SSID based | ||
updates so copy the SSID. | ||
|
||
Fixes: a96202acaea4 ("wifi: brcmfmac: cfg80211: Add support for PMKID_V3 operations") | ||
Signed-off-by: Janne Grunau <[email protected]> | ||
--- | ||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 13 ++++++++++--- | ||
1 file changed, 10 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | ||
index 5fe0e671ecb3..826b768196e2 100644 | ||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | ||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | ||
@@ -4320,9 +4320,16 @@ brcmf_pmksa_v3_op(struct brcmf_if *ifp, struct cfg80211_pmksa *pmksa, | ||
/* Single PMK operation */ | ||
pmk_op->count = cpu_to_le16(1); | ||
length += sizeof(struct brcmf_pmksa_v3); | ||
- memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN); | ||
- memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN); | ||
- pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN; | ||
+ if (pmksa->bssid) | ||
+ memcpy(pmk_op->pmk[0].bssid, pmksa->bssid, ETH_ALEN); | ||
+ if (pmksa->pmkid) { | ||
+ memcpy(pmk_op->pmk[0].pmkid, pmksa->pmkid, WLAN_PMKID_LEN); | ||
+ pmk_op->pmk[0].pmkid_len = WLAN_PMKID_LEN; | ||
+ } | ||
+ if (pmksa->ssid && pmksa->ssid_len) { | ||
+ memcpy(pmk_op->pmk[0].ssid.SSID, pmksa->ssid, pmksa->ssid_len); | ||
+ pmk_op->pmk[0].ssid.SSID_len = pmksa->ssid_len; | ||
+ } | ||
pmk_op->pmk[0].time_left = cpu_to_le32(alive ? BRCMF_PMKSA_NO_EXPIRY : 0); | ||
} | ||
|
||
|
||
--- | ||
base-commit: 0c3836482481200ead7b416ca80c68a29cfdaabd | ||
change-id: 20240803-brcmfmac_pmksa_del_ssid-3c35efe35330 |