CVE-2026-93830: net: stmmac: xgmac2: disable RBUE in default RX interrupt mask
In the Linux kernel, the following vulnerability has been resolved:
net: stmmac: xgmac2: disable RBUE in default RX interrupt mask
Enabling the RX Buffer Unavailable (RBUE) interrupt is counterproductive and can trigger a MAC interrupt storm under heavy RX pressure. When the DMA runs out of RX descriptors it fires RBUE continuously until software refills the ring.
However, RBUE is redundant: the normal RX completion interrupt (RIE) already triggers NAPI, which processes completed descriptors and refills the ring, causing the DMA to resume. The RBUE handler itself only sets handlerx - the same outcome as RIE.
On Agilex5 under heavy RX pressure, the MAC interrupt (which includes RBUE) was observed firing 1,821,811,555 times against only 2,618,627 actual RX completions - a ~695x ratio - confirming the severity of the storm.
RBUE does not provide OOM recovery. If pagepool is exhausted, stmmacrxrefill() cannot advance the DMA tail pointer, the DMA stays suspended, and RBUE fires again on the next NAPI completion - a storm with no forward progress. This patch trades that storm for a clean stall with the same RX outcome. Proper OOM recovery is a pre-existing gap outside the scope of this fix.
Note: as a consequence of disabling RBUE, the rxbufunavirq ethtool counter will always read 0 on XGMAC2 devices. This behaviour is already inconsistent across DWMAC core versions.
Remove RBUE from XGMACDMAINTDEFAULTEN and XGMACDMAINTDEFAULTRX to prevent the interrupt storm while keeping normal RX handling intact.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Remove RBUE from the default DMA interrupt masks XGMAC_DMA_INT_DEFAULT_EN and XGMAC_DMA_INT_DEFAULT_RX to prevent the RX Buffer Unavailable interrupt storm while retaining normal RX completion handling.
Linux kernel stmmac XGMAC2 XGMAC_DMA_INT_DEFAULT_EN and XGMAC_DMA_INT_DEFAULT_RX = RBUE disabled/removed
Event History
Frequently Asked Questions
Which systems are most likely to experience this issue?
Systems using the Linux stmmac xgmac2 driver with RBUE enabled in the default RX interrupt mask are exposed when they encounter heavy RX pressure. The reported observation was on Agilex5, where MAC interrupts greatly exceeded actual RX completions.
What conditions trigger the interrupt storm?
The storm occurs when DMA runs out of RX descriptors and repeatedly raises the RX Buffer Unavailable interrupt until software refills the ring. Page-pool exhaustion can prevent refill progress, leaving DMA suspended and causing RBUE to fire again after subsequent NAPI completions.
Is the default configuration affected?
Yes. RBUE was enabled in the default RX interrupt mask before the fix. The change disables RBUE there because normal RX completion interrupts already schedule NAPI and refill completed descriptors.
How can administrators identify an affected system?
A key indicator is a very large disparity between MAC interrupt activity, including RBUE, and actual RX completions during RX pressure. In the reported case, 1,821,811,555 MAC interrupts occurred for 2,618,627 RX completions.
What is the operational effect of the fix if RX memory is exhausted?
The fix replaces the repeated RBUE interrupt storm with a clean RX stall when descriptors cannot be refilled. It does not add recovery for page-pool exhaustion; that recovery gap is outside the scope of this change.