Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wifi: wfx: repair open network AP mode

RSN IE missing in beacon is normal in open networks.
Avoid returning -EINVAL in this case.

Steps to reproduce:

$ cat /etc/wpa_supplicant.conf
network={
ssid="testNet"
mode=2
key_mgmt=NONE
}

$ wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf
nl80211: Beacon set failed: -22 (Invalid argument)
Failed to set beacon parameters
Interface initialization failed
wlan0: interface state UNINITIALIZED->DISABLED
wlan0: AP-DISABLED
wlan0: Unable to setup interface.
Failed to initialize AP interface

After the change:

$ wpa_supplicant -iwlan0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

Cc: stable@vger.kernel.org
Fixes: fe0a7776d4d1 ("wifi: wfx: fix possible NULL pointer dereference in wfx_set_mfp_ap()")
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
Reviewed-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://patch.msgid.link/20240823131521.3309073-1-alexander.sverdlin@siemens.com

authored by

Alexander Sverdlin and committed by
Kalle Valo
6d30bb88 786c5be9

+4 -1
+4 -1
drivers/net/wireless/silabs/wfx/sta.c
··· 352 352 353 353 ptr = (u16 *)cfg80211_find_ie(WLAN_EID_RSN, skb->data + ieoffset, 354 354 skb->len - ieoffset); 355 - if (unlikely(!ptr)) 355 + if (!ptr) { 356 + /* No RSN IE is fine in open networks */ 357 + ret = 0; 356 358 goto free_skb; 359 + } 357 360 358 361 ptr += pairwise_cipher_suite_count_offset; 359 362 if (WARN_ON(ptr > (u16 *)skb_tail_pointer(skb)))