KernelScan.io

HIGH

iommu AtomicPool Deref

CVE-2026-90388

CVSS 7.8 / 10.0 NVD

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

KernelScan AI5.5MEDIUM

01

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.

02

Engine v0.6.0

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.

Affecteddrivers/iommu/dma-iommu.c (iommu/dma)

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.

03

BranchIntroducedFixed inPatch commit
mainline—7.3-rc1—
6.1—6.1.18806dffc966930
6.18—6.18.528c486293ddd0
5.10—5.10.270db46cb9da83a
6.6—6.6.157a4ace31d732b
5.85.8.65.9ac9cd0a669b8
7.2—7.2.6af95a0ebc0a0
5.15—5.15.221d56c3f955b21
6.12—6.12.110fb0b39287ba8
cip/6.12—6.12.111-cip32a4ace31d732b