CVE-2026-80633
nicheMissing dma_resv lock in Linux kernel iommufd DMA-BUF unpin path causes kernel WARN
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.
| Linux kernel (iommufd subsystem, DMA-BUF unpin/release path) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.