KernelScan.io

HIGH

net/stmmac SplitHeader OOB

CVE-2026-45940

CVSS 8.1 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H

01

In the Linux kernel, the following vulnerability has been resolved: net: stmmac: fix oops when split header is enabled For GMAC4, when split header is enabled, in some rare cases, the hardware does not fill buf2 of the first descriptor with payload. Thus we cannot assume buf2 is always fully filled if it is not the last descriptor. Otherwise, the length of buf2 of the second descriptor will be calculated wrong and cause an oops: Unable to handle kernel paging request at virtual address ffff00019246bfc0 ... x2 : 0000000000000040 x1 : ffff00019246bfc0 x0 : ffff00009246c000 Call trace: dcache_inval_poc+0x28/0x58 (P) dma_direct_sync_single_for_cpu+0x38/0x6c __dma_sync_single_for_cpu+0x34/0x6c stmmac_napi_poll_rx+0x8f0/0xb60 __napi_poll.constprop.0+0x30/0x144 net_rx_action+0x160/0x274 handle_softirqs+0x1b8/0x1fc ... To fix this, the PL bit-field in RDES3 register is used for all descriptors, whether it is the last descriptor or not.

02

Engine v0.2.0

Risk summary

Systems using STMicroelectronics GMAC4 ethernet controllers with split header mode enabled are vulnerable to remote kernel crashes. An attacker sending network packets can trigger a kernel oops due to incorrect DMA buffer length calculation, resulting in denial of service.

Affecteddrivers/net/ethernet/stmicro/stmmac/stmmac_main.c (stmmac ethernet driver)

Vulnerability analysis

The root cause is incorrect buffer length calculation in the stmmac ethernet driver's receive path when split header mode is enabled on GMAC4 hardware. The original code assumed buf2 is always fully filled for non-last descriptors, but the hardware can leave buf2 empty in rare cases. This leads to wrong length calculations for subsequent descriptors, causing an out-of-bounds read during DMA cache synchronization operations. The fix uses the PL bit-field from the RDES3 register for all descriptors to accurately determine buffer lengths. Because the vulnerability is in the packet receive path of a network interface, it is remotely reachable from any source that can transmit packets to the affected interface.

03

BranchFixed inPatch commit
6.186.18.14b1f23df09e7d
6.196.19.436f81cb7d82e
mainline7.0babab1b42ed6