Live › vulnerability › CVE-2026-99028
Go to dashboardIn the Linux kernel's Xilinx AXI Ethernet driver, buffers still held by the DMA engine are not freed when the interface is brought down, so each ifdown leaks socket buffers and their DMA mappings. The sources describe this as a resource leak that can eventually exhaust a limited IOMMU aperture; they do not describe code execution or data theft.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-23 21:57 UTC. All times on this page are UTC.
Systems running a Linux kernel with the Xilinx AXI Ethernet (axienet) driver using the dmaengine path, typically embedded or FPGA-based boards, where the interface is repeatedly brought down and up. Systems without this hardware or driver are not affected. The sources do not state whether an IOMMU is involved in typical deployments.
No product ranges from the sources yet.
Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
In the Linux kernel, the following vulnerability has been resolved:
net: xilinx: axienet: Free outstanding DMA buffers on dmaengine stop
In the dmaengine path the driver pre-submits RX buffers and holds in-flight TX buffers whose SKBs are DMA-mapped by the driver and freed only in the completion callbacks. On ndo_stop() dmaengine_terminate_sync() aborts these descriptors without running their callbacks, and the driver then frees only the ring shells, leaking every SKB still owned by the engine and its DMA mapping on each ifdown. With 128 RX buffers pre-posted per channel, the mapping leak can eventually exhaust a limited IOMMU aperture.
Clear the slot's skb in the TX and RX callbacks so a non-NULL skb marks a slot that still owns a live, DMA-mapped buffer, and on stop unmap and free every such buffer.
axienet_dma_rx_cb() runs from the DMA tasklet and re-arms the RX ring on each completion, so it can race axienet_stop(): a completion may submit a fresh buffer after dmaengine_terminate_sync() has returned, leaving the channel armed with a buffer the teardown then frees while the engine may still write into it (dma_release_channel() does not stop it either). Add a lock that axienet_dma_rx_cb() holds across the @stopping check and the resubmit, and axienet_stop() holds to set @stopping before terminating. Once @stopping is set no callback can arm a new buffer, and any armed just before is aborted by the terminate, so teardown only frees buffers the engine no longer owns.
This page as .md · .json · in your agent: get_signal("CVE-2026-99028")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.