1
0
Fork 0
android_kernel_rockchip_tart/drivers
dvab-sarma 9a6c85c2de wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode
commit 3776c685ebe5f43e9060af06872661de55e80b9a upstream.

Currently, whenever there is a need to transmit an Action frame,
the brcmfmac driver always uses the P2P vif to send the "actframe" IOVAR to
firmware. The P2P interfaces were available when wpa_supplicant is managing
the wlan interface.

However, the P2P interfaces are not created/initialized when only hostapd
is managing the wlan interface. And if hostapd receives an ANQP Query REQ
Action frame even from an un-associated STA, the brcmfmac driver tries
to use an uninitialized P2P vif pointer for sending the IOVAR to firmware.
This NULL pointer dereferencing triggers a driver crash.

 [ 1417.074538] Unable to handle kernel NULL pointer dereference at virtual
 address 0000000000000000
 [...]
 [ 1417.075653] Call trace:
 [ 1417.075662]  brcmf_p2p_send_action_frame+0x23c/0xc58 [brcmfmac]
 [ 1417.075738]  brcmf_cfg80211_mgmt_tx+0x304/0x5c0 [brcmfmac]
 [ 1417.075810]  cfg80211_mlme_mgmt_tx+0x1b0/0x428 [cfg80211]
 [ 1417.076067]  nl80211_tx_mgmt+0x238/0x388 [cfg80211]
 [ 1417.076281]  genl_family_rcv_msg_doit+0xe0/0x158
 [ 1417.076302]  genl_rcv_msg+0x220/0x2a0
 [ 1417.076317]  netlink_rcv_skb+0x68/0x140
 [ 1417.076330]  genl_rcv+0x40/0x60
 [ 1417.076343]  netlink_unicast+0x330/0x3b8
 [ 1417.076357]  netlink_sendmsg+0x19c/0x3f8
 [ 1417.076370]  __sock_sendmsg+0x64/0xc0
 [ 1417.076391]  ____sys_sendmsg+0x268/0x2a0
 [ 1417.076408]  ___sys_sendmsg+0xb8/0x118
 [ 1417.076427]  __sys_sendmsg+0x90/0xf8
 [ 1417.076445]  __arm64_sys_sendmsg+0x2c/0x40
 [ 1417.076465]  invoke_syscall+0x50/0x120
 [ 1417.076486]  el0_svc_common.constprop.0+0x48/0xf0
 [ 1417.076506]  do_el0_svc+0x24/0x38
 [ 1417.076525]  el0_svc+0x30/0x100
 [ 1417.076548]  el0t_64_sync_handler+0x100/0x130
 [ 1417.076569]  el0t_64_sync+0x190/0x198
 [ 1417.076589] Code: f9401e80 aa1603e2 f9403be1 5280e483 (f9400000)

Fix this, by always using the vif corresponding to the wdev on which the
Action frame Transmission request was initiated by the userspace. This way,
even if P2P vif is not available, the IOVAR is sent to firmware on AP vif
and the ANQP Query RESP Action frame is transmitted without crashing the
driver.

Move init_completion() for "send_af_done" from brcmf_p2p_create_p2pdev()
to brcmf_p2p_attach(). Because the former function would not get executed
when only hostapd is managing wlan interface, and it is not safe to do
reinit_completion() later in brcmf_p2p_tx_action_frame(), without any prior
init_completion().

And in the brcmf_p2p_tx_action_frame() function, the condition check for
P2P Presence response frame is not needed, since the wpa_supplicant is
properly sending the P2P Presense Response frame on the P2P-GO vif instead
of the P2P-Device vif.

Cc: stable@vger.kernel.org
Fixes: 18e2f61 ("brcmfmac: P2P action frame tx")
Signed-off-by: Gokul Sivakumar <gokulkumar.sivakumar@infineon.com>
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Link: https://patch.msgid.link/20251013102819.9727-1-gokulkumar.sivakumar@infineon.com
[Cc stable]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2025-12-04 02:20:01 -06:00
..
accel can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
accessibility can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
acpi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
amba can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
android can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ata can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
atm can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
auxdisplay can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
base can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
bcma can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
block can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
bluetooth can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
bus can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
cache can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
cdrom can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
cdx can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
char can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
clk can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
clocksource can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
comedi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
connector can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
counter can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
cpufreq can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
cpuidle can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
crypto can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
cxl can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
dax can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
dca can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
devfreq can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
dio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
dma can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
dma-buf can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
dpll can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
edac can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
eisa can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
extcon can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
firewire can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
firmware can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
fpga can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
fsi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
fwctl can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
gnss can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
gpio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
gpu These changes enable the dp0 node of rk3588(s), which enables DisplayPort of the SoC. This is essential as the seconday hdmi port of Orange pi 5 pro is fundamentally a DP port 2025-12-04 02:12:24 -06:00
greybus can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hid can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hsi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hte can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hv can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hwmon can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hwspinlock can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
hwtracing can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
i2c can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
i3c can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
idle can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
iio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
infiniband can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
input can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
interconnect can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
iommu can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ipack can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
irqchip can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
isdn can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
leds can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
macintosh can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
mailbox can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
mcb can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
md can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
media fixing copyright section 2025-11-17 00:59:28 -06:00
memory can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
memstick can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
message can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
mfd can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
misc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
mmc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
most can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
mtd can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
mux can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
net wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode 2025-12-04 02:20:01 -06:00
nfc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ntb can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
nubus can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
nvdimm can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
nvme can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
nvmem can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
of can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
opp can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
parisc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
parport can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pci can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pcmcia can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
peci can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
perf can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
phy can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pinctrl can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
platform can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pmdomain can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pnp can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
power can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
powercap can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pps can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ps3 can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ptp can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
pwm can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
rapidio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ras can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
regulator can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
remoteproc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
reset can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
rpmsg can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
rtc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
s390 can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
sbus can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
scsi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
sh can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
siox can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
slimbus can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
soc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
soundwire can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
spi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
spmi can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ssb can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
staging Adding HEVC and h.264 using v4l2 requests - testing! not final prod build 2025-10-27 01:42:27 -05:00
target can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
tc can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
tee can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
thermal can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
thunderbolt can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
tty can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
ufs can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
uio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
usb can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
vdpa can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
vfio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
vhost can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
video can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
virt can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
virtio can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
w1 can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
watchdog can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
xen can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
zorro can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
Kconfig can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
Makefile can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00
OWNERS can be used for AOSP 15 & 16 2025-06-27 00:32:42 -05:00