ZeroHour

CVE-2026-80633

niche

Missing dma_resv lock in Linux kernel iommufd DMA-BUF unpin path causes kernel WARN

CVSS 3.1
8.8 high
EPSS
<1%p2
Published
()
Modified
AI analysis

CVE-2026-80633 is a locking flaw in the Linux kernel's iommufd subsystem: iopt_release_pages() calls dma_buf_unpin() without first acquiring the DMA-BUF exporter's dma_resv lock, which dma_buf_unpin() explicitly asserts is held. The bug is triggered whenever iommufd_ioas_destroy() or iommufd_ioas_unmap() releases the last reference on a DMA-BUF-backed iopt_pages — for example, a low-privileged local process using iommufd with imported DMA-BUF mappings (such as virtualization or GPU-passthrough workloads) closing or unmapping its I/O address space, producing a kernel WARN. The directly observed impact is a kernel warning in the DMA-BUF unpin path (a denial-of-service-class reliability bug), while the 8.8 CVSS score reflects a worst case of high confidentiality, integrity and availability impact with scope change. Only systems running kernels whose iommufd code predates the fix and that actually exercise the iommufd DMA-BUF unpin path are affected; the fix takes the dma_resv lock around dma_buf_unpin(), keeping dma_buf_detach() outside the locked region because it acquires the lock internally. No public proof-of-concept exists, the flaw is not in CISA KEV, and EPSS estimates only about 0.1% probability of exploitation within 30 days, so no exploitation is currently known.

What to do: Patch with a kernel that includes the fix commit 'iommufd: Take dma_resv lock before dma_buf_unpin() in release path', obtained via the stable kernel tree or your distribution's next kernel update (no fixed version number was provided in the source data). Until patched, prioritize or restrict workloads on hosts that use iommufd with DMA-BUF-backed mappings (e.g., QEMU/KVM with VFIO DMA-BUF or GPU-passthrough setups), since standard desktop and embedded Linux systems not using iommufd DMA-BUF are effectively unaffected. With no public PoC, no KEV entry, and a ~0.1% EPSS score, treat this as routine patching except for virtualization hosts that exercise the affected path.

Affected
Linux kernel (iommufd subsystem, DMA-BUF unpin/release path)
Estimated exposure
nichelikely tens of thousands of hosts at most (est.) — The vulnerable path only runs when local workloads use iommufd with DMA-BUF-backed I/O mappings — mainly KVM/QEMU virtualization with VFIO DMA-BUF or GPU passthrough — a small fraction of the enormous Linux install base, and no public…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: iommufd: Take dma_resv lock before dma_buf_unpin() in release path dma_buf_unpin() requires the caller to hold the exporter's dma_resv lock: void dma_buf_unpin(struct dma_buf_attachment *attach) { ... dma_resv_assert_held(dmabuf->resv); ... } iopt_release_pages() calls dma_buf_unpin() without taking that lock, so every iommufd_ioas_destroy()/iommufd_ioas_unmap() that releases the last reference on a DMABUF-backed iopt_pages triggers a WARN. This was hit while running tools/testing/selftests/iommu/iommufd: WARNING: drivers/dma-buf/dma-buf.c:1137 at dma_buf_unpin+0x62/0x70 RIP: 0010:dma_buf_unpin+0x62/0x70 Call Trace: dma_buf_unpin+0x62/0x70 iopt_release_pages+0xe4/0x190 iopt_unmap_iova_range+0x1c7/0x290 iopt_unmap_all+0x1a/0x30 iommufd_ioas_destroy+0x1d/0x50 iommufd_fops_release+0x93/0x150 __fput+0xfc/0x2c0 __x64_sys_close+0x3d/0x80 do_syscall_64+0x65/0x180 Take the dma_resv lock around dma_buf_unpin() in iopt_release_pages(), matching the iopt_map_dmabuf() convention. dma_buf_detach() acquires the reservation lock internally, so it must remain outside the locked region.

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

In the news

No ingested article mentions this CVE yet.