CVE-2024-56593

In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw() This patch fixes a NULL pointer dereference bug in brcmfmac that occurs when a high 'sd_sgentry_align' value applies (e.g. 512) and a lot of queued SKBs are sent from the pkt queue. The problem is the number of entries in the pre-allocated sgtable, it is nents = max(rxglom_size, txglom_size) + max(rxglom_size, txglom_size) >> 4 + 1. Given the default [rt]xglom_size=32 it's actually 35 which is too small. Worst case, the pkt queue can end up with 64 SKBs. This occurs when a new SKB is added for each original SKB if tailroom isn't enough to hold tail_pad. At least one sg entry is needed for each SKB. So, eventually the "skb_queue_walk loop" in brcmf_sdiod_sglist_rw may run out of sg entries. This makes sg_next return NULL and this causes the oops. The patch sets nents to max(rxglom_size, txglom_size) * 2 to be able handle the worst-case. Btw. this requires only 64-35=29 * 16 (or 20 if CONFIG_NEED_SG_DMA_LENGTH) = 464 additional bytes of memory.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

08 Jan 2025, 16:44

Type Values Removed Values Added
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
CWE CWE-476
First Time Linux linux Kernel
Linux
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: wifi: brcmfmac: Fix oops due to NULL pointer dereference in brcmf_sdiod_sglist_rw() Este parche corrige un error de desreferencia de puntero NULL en brcmfmac que ocurre cuando se aplica un valor alto de 'sd_sgentry_align' (por ejemplo, 512) y se envían muchos SKB en cola desde la cola pkt. El problema es la cantidad de entradas en la sgtable preasignada, es nents = max(rxglom_size, txglom_size) + max(rxglom_size, txglom_size) >> 4 + 1. Dado el valor predeterminado [rt]xglom_size=32, en realidad es 35, que es demasiado pequeño. En el peor de los casos, la cola pkt puede terminar con 64 SKB. Esto ocurre cuando se agrega un nuevo SKB para cada SKB original si tailroom no es suficiente para albergar tail_pad. Se necesita al menos una entrada sg para cada SKB. Por lo tanto, eventualmente el "bucle skb_queue_walk" en brcmf_sdiod_sglist_rw puede quedarse sin entradas sg. Esto hace que sg_next devuelva NULL y esto causa el error. El parche establece nents en max(rxglom_size, txglom_size) * 2 para poder gestionar el peor de los casos. Por cierto, esto requiere solo 64-35=29 * 16 (o 20 si CONFIG_NEED_SG_DMA_LENGTH) = 464 bytes adicionales de memoria.
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
References () https://git.kernel.org/stable/c/07c020c6d14d29e5a3ea4e4576b8ecf956a80834 - () https://git.kernel.org/stable/c/07c020c6d14d29e5a3ea4e4576b8ecf956a80834 - Patch
References () https://git.kernel.org/stable/c/342f87d263462c2670b77ea9a32074cab2ac6fa1 - () https://git.kernel.org/stable/c/342f87d263462c2670b77ea9a32074cab2ac6fa1 - Patch
References () https://git.kernel.org/stable/c/34941321b516bd7c6103bd01287d71a1804d19d3 - () https://git.kernel.org/stable/c/34941321b516bd7c6103bd01287d71a1804d19d3 - Patch
References () https://git.kernel.org/stable/c/67a25ea28f8ec1da8894f2f115d01d3becf67dc7 - () https://git.kernel.org/stable/c/67a25ea28f8ec1da8894f2f115d01d3becf67dc7 - Patch
References () https://git.kernel.org/stable/c/7522d7d745d13fbeff3350fe6aa56c8dae263571 - () https://git.kernel.org/stable/c/7522d7d745d13fbeff3350fe6aa56c8dae263571 - Patch
References () https://git.kernel.org/stable/c/857282b819cbaa0675aaab1e7542e2c0579f52d7 - () https://git.kernel.org/stable/c/857282b819cbaa0675aaab1e7542e2c0579f52d7 - Patch
References () https://git.kernel.org/stable/c/dfb3f9d3f602602de208da7bdcc0f6d5ee74af68 - () https://git.kernel.org/stable/c/dfb3f9d3f602602de208da7bdcc0f6d5ee74af68 - Patch

27 Dec 2024, 15:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-12-27 15:15

Updated : 2025-01-08 16:44


NVD link : CVE-2024-56593

Mitre link : CVE-2024-56593

CVE.ORG link : CVE-2024-56593


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-476

NULL Pointer Dereference