linux/drivers/net/wireless
Marcel Hamer 68abd0c4eb wifi: brcmfmac: fix NULL pointer dereference in brcmf_txfinalize()
On removal of the device or unloading of the kernel module a potential NULL
pointer dereference occurs.

The following sequence deletes the interface:

  brcmf_detach()
    brcmf_remove_interface()
      brcmf_del_if()

Inside the brcmf_del_if() function the drvr->if2bss[ifidx] is updated to
BRCMF_BSSIDX_INVALID (-1) if the bsscfgidx matches.

After brcmf_remove_interface() call the brcmf_proto_detach() function is
called providing the following sequence:

  brcmf_detach()
    brcmf_proto_detach()
      brcmf_proto_msgbuf_detach()
        brcmf_flowring_detach()
          brcmf_msgbuf_delete_flowring()
            brcmf_msgbuf_remove_flowring()
              brcmf_flowring_delete()
                brcmf_get_ifp()
                brcmf_txfinalize()

Since brcmf_get_ip() can and actually will return NULL in this case the
call to brcmf_txfinalize() will result in a NULL pointer dereference inside
brcmf_txfinalize() when trying to update ifp->ndev->stats.tx_errors.

This will only happen if a flowring still has an skb.

Although the NULL pointer dereference has only been seen when trying to
update the tx statistic, all other uses of the ifp pointer have been
guarded as well with an early return if ifp is NULL.

Cc: stable@vger.kernel.org
Signed-off-by: Marcel Hamer <marcel.hamer@windriver.com>
Link: https://lore.kernel.org/all/b519e746-ddfd-421f-d897-7620d229e4b2@gmail.com/
Acked-by: Arend van Spriel  <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://patch.msgid.link/20250116132240.731039-1-marcel.hamer@windriver.com
2025-01-16 21:26:30 +02:00
..
admtek
ath wifi: ath12k: fix key cache handling 2025-01-14 12:53:01 -08:00
atmel
broadcom wifi: brcmfmac: fix NULL pointer dereference in brcmf_txfinalize() 2025-01-16 21:26:30 +02:00
intel wifi: iwlwifi: simplify nested if checks 2025-01-13 15:34:09 +01:00
intersil
marvell wifi: mwifiex: decrease timeout waiting for host sleep from 10s to 5s 2024-12-09 17:59:45 +02:00
mediatek wifi: mt76: mt7996: add implicit beamforming support for mt7992 2025-01-14 13:42:30 +01:00
microchip wifi: wilc1000: unregister wiphy only after netdev registration 2025-01-15 18:24:33 +02:00
purelifi
quantenna wifi: qtnfmac: fix spelling error in core.h 2024-12-12 20:01:33 +02:00
ralink wifi: rt2x00: Remove unused rfval values 2025-01-10 15:11:06 +02:00
realtek wifi: rtw88: add RTW88_LEDS depends on LEDS_CLASS to Kconfig 2025-01-16 21:26:05 +02:00
rsi
silabs
st wifi: cw1200: Fix potential NULL dereference 2024-12-18 19:58:27 +02:00
ti wifi: wlcore: fix unbalanced pm_runtime calls 2025-01-10 14:51:26 +02:00
virtual
zydas
Kconfig
Makefile