HIGH
iommu AtomicPool Deref
CVE-2026-90388
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI5.5MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: iommu/dma: Check atomic pool allocation result directly The non-blocking, non-coherent allocation path uses dma_alloc_from_pool(), which returns the allocated page and fills cpu_addr only on success. Do not rely on cpu_addr to detect allocation failure in this path. Check the returned page directly before using it for the IOMMU mapping.
02KernelScan AI Analysis
Risk summary
A local attacker who can trigger device DMA operations on an IOMMU-capable system can cause a kernel panic by inducing a failure in the atomic DMA pool allocation path. The impact is denial of service with no data corruption or disclosure. Systems without IOMMU hardware or without devices using non-blocking non-coherent DMA allocations are not affected.
Vulnerability analysis
In the IOMMU DMA allocation path for non-blocking, non-coherent requests, the code allocates from an atomic memory pool and then checks a secondary output parameter to determine whether the allocation succeeded. However, that parameter is only populated on success, so a failed pool allocation can go undetected and the code proceeds to use a null page pointer for IOMMU mapping, causing a kernel NULL pointer dereference and panic. The fix checks the returned page pointer directly immediately after the pool allocation and returns failure before any mapping is attempted. This path is reachable by local processes that can trigger device driver DMA operations on systems with IOMMU enabled and a device configured for non-coherent DMA; no network access or special hardware beyond an IOMMU-capable platform is required.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | — | 5.10.270 | db46cb9da83a |
| 5.15 | — | 5.15.221 | d56c3f955b21 |
| 5.8 | 5.8.6 | 5.9 | ac9cd0a669b8 |
| 6.1 | — | 6.1.188 | 06dffc966930 |
| 6.12 | — | 6.12.110 | fb0b39287ba8 |
| 6.18 | — | 6.18.52 | 8c486293ddd0 |
| 6.6 | — | 6.6.157 | a4ace31d732b |
| 7.2 | — | 7.2.6 | af95a0ebc0a0 |
| mainline | — | 7.3 | — |
| cip/5.10 | — | 5.10.271-cip78 | ac9cd0a669b8 |
| cip/6.1 | — | 6.1.189-cip61 | d56c3f955b21 |
| cip/6.1-rt | — | 6.1.189-cip61-rt32 | d56c3f955b21 |
| cip/6.12 | — | 6.12.111-cip32 | a4ace31d732b |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.271-cip78 |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |