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:
<TASK>
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
</TASK>

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.
Published: 2026-08-28
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Linux kernel function that releases pages from an IOMMU-managed buffer does not acquire the required reservation lock before calling dma_buf_unpin. Because dma_buf_unpin asserts that it is called while holding this lock, the missing lock causes a kernel warning and can expose a race condition that may lead to inconsistent state or a crash if multiple threads enter the release path concurrently.

Affected Systems

All Linux kernels that include the iommu/iommufd code prior to the commit that added the lock. The issue is specific to the iommu framework and any modules that map DMA buffers using iommufd. No vendor or version list is provided, so every distribution kernel that has this code and has not applied the patch is potentially affected.

Risk and Exploitability

The vulnerability is local and requires the ability to trigger iommufd release paths, such as by unmapping or closing a DMA‑buffer backed device. The CVSS score is not supplied and the EPSS value is not available, so the exploit probability cannot be quantified precisely. Because the flaw leads to a kernel warning that could evolve into a denial‑of‑service if repeatedly triggered, it poses a moderate to high stability risk. It is not listed in the CISA KEV catalog, indicating it has not yet been widely exploited, but systems that rely heavily on DMA‑buffer delivery should consider it a serious issue given the potential for kernel instability.

Generated by OpenCVE AI on August 28, 2026 at 09:25 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a release that includes commits cc69d033 and e745cd2c which lock dma_resv before calling dma_buf_unpin.
  • Verify that the running kernel originates from a distribution that has applied the iommufd patch. If not, apply the patch manually or upgrade to a newer kernel version from the vendor.
  • Monitor system logs for WARN messages from dma_buf_unpin and iopt_release_pages; any occurrence indicates the kernel is still using the vulnerable path and should be patched promptly.

Generated by OpenCVE AI on August 28, 2026 at 09:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 09:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362

Fri, 28 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
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: <TASK> 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 </TASK> 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.
Title iommufd: Take dma_resv lock before dma_buf_unpin() in release path
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-28T06:48:48.372Z

Reserved: 2026-08-26T14:34:25.776Z

Link: CVE-2026-80633

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-28T08:16:48.200

Modified: 2026-08-28T08:16:48.200

Link: CVE-2026-80633

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T09:30:18Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')