Linux: net: stmmac: xgmac2: disable RBUE in default RX interrupt mask
What fixes it
- 8c9d57b5dc098b84631d0b3559c84c499ea2170aLinuxCVE List
- 7a10e54e42a8f73a8d731f5a281fc06bb41b9250LinuxCVE List
- 6b3b91433d5f4eae6865cdaa96f40cd67849e1f6LinuxCVE List
- 74dbb85a6a254b5fc1f265a6cd61b2ba9d9221d7LinuxCVE List
- 0b1a5d3647ce07c27a9fffefc11a8cbf7d7b25ceLinuxCVE List
- 87e2826ed2058747ddf014c082569a46bfadd96bLinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
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 handle_rx - 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 page_pool is exhausted, stmmac_rx_refill() 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 rx_buf_unav_irq ethtool counter will always read 0 on XGMAC2 devices. This behaviour is already inconsistent across DWMAC core versions.
Remove RBUE from XGMAC_DMA_INT_DEFAULT_EN and XGMAC_DMA_INT_DEFAULT_RX to prevent the interrupt storm while keeping normal RX handling intact.
Text from CVE List
Affected versions 16
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before 8c9d57b5dc098b84631d0b3559c84c499ea2170aCVE List
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before 7a10e54e42a8f73a8d731f5a281fc06bb41b9250CVE List
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before 6b3b91433d5f4eae6865cdaa96f40cd67849e1f6CVE List
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before 74dbb85a6a254b5fc1f265a6cd61b2ba9d9221d7CVE List
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before 0b1a5d3647ce07c27a9fffefc11a8cbf7d7b25ceCVE List
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before 87e2826ed2058747ddf014c082569a46bfadd96bCVE List
- Linuxaffected: d6ddfacd95c79d43465d4a85dffb1c9beca343a9 before d3265c19b35d036bba327b36b5366bee76b0157cCVE List
- Linuxaffected: 4.19CVE List
- Linuxunaffected: all versions before 4.19CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2CVE List
References 7
- git.kernel.org/stable/c/8c9d57b5dc098b84631d0b3559c84c499ea2170aReferencevia CVE List
- git.kernel.org/stable/c/7a10e54e42a8f73a8d731f5a281fc06bb41b9250Referencevia CVE List
- git.kernel.org/stable/c/6b3b91433d5f4eae6865cdaa96f40cd67849e1f6Referencevia CVE List
- git.kernel.org/stable/c/74dbb85a6a254b5fc1f265a6cd61b2ba9d9221d7Referencevia CVE List
- git.kernel.org/stable/c/0b1a5d3647ce07c27a9fffefc11a8cbf7d7b25ceReferencevia CVE List
- git.kernel.org/stable/c/87e2826ed2058747ddf014c082569a46bfadd96bReferencevia CVE List
- git.kernel.org/stable/c/d3265c19b35d036bba327b36b5366bee76b0157cReferencevia CVE List