CVE-2025-39961: iommu/amd/pgtbl: Fix possible race while increase page table level
In the Linux kernel, the following vulnerability has been resolved:
iommu/amd/pgtbl: Fix possible race while increase page table level
The AMD IOMMU host page table implementation supports dynamic page table levels
(up to 6 levels), starting with a 3-level configuration that expands based on
IOVA address. The kernel maintains a root pointer and current page table level
to enable proper page table walks in alloc_pte()/fetch_pte() operations.
The IOMMU IOVA allocator initially starts with 32-bit address and onces its
exhuasted it switches to 64-bit address (max address is determined based
on IOMMU and device DMA capability). To support larger IOVA, AMD IOMMU
driver increases page table level.
But in unmap path (iommu_v1_unmap_pages()), fetch_pte() reads
pgtable->[root/mode] without lock. So its possible that in exteme corner case,
when increase_address_space() is updating pgtable->[root/mode], fetch_pte()
reads wrong page table level (pgtable->mode). It does compare the value with
level encoded in page table and returns NULL. This will result is
iommu_unmap ops to fail and upper layer may retry/log WARN_ON.
CPU 0 CPU 1
------ ------
map pages unmap pages
alloc_pte() -> increase_address_space() iommu_v1_unmap_pages() -> fetch_pte()
pgtable->root = pte (new root value)
READ pgtable->[mode/root]
Reads new root, old mode
Updates mode (pgtable->mode += 1)
Since Page table level updates are infrequent and already synchronized with a
spinlock, implement seqcount to enable lock-free read operations on the read path.
Security readout for executives and security teams
Plain-English summary
A race in the Linux AMD IOMMU driver can make memory-unmapping operations fail when the driver expands its page table. This may produce retries or kernel warnings. The supplied 8.8 score indicates potentially severe impact, although the technical description documents an unmap failure rather than demonstrated compromise.
Executive priority
Treat as a high-priority kernel maintenance issue on AMD IOMMU infrastructure, especially virtualization or DMA-intensive hosts. Expedite exposure verification and vendor-approved updates. Immediate emergency response is not supported by the supplied evidence because active exploitation is unreported and the documented race is an extreme corner case.
Technical view
During concurrent mapping and unmapping, increase_address_space() can update the page-table root before its level, while fetch_pte() reads both without locking. The reader may combine the new root with the old level, reject the mismatch, and return NULL. The published correction uses a sequence counter to provide consistent lock-free reads.
Likely exposure
Exposure is limited to Linux systems using AMD IOMMU host page tables and an affected kernel. The source marks 5.3, 6.6.108, 6.12.49, 6.16.9, and 6.17 affected, but also contains an anomalous version “0.” Confirm applicability through the system’s distribution or kernel vendor.
Exploitation context
The CVE is not listed as KEV in the supplied bundle, and no cited source reports active exploitation. Triggering requires local, low-privileged access according to the CVSS vector, plus the uncommon concurrent page-table expansion condition.
Researcher notes
The supplied CVSS claims high confidentiality, integrity, and availability impact with changed scope, but the vulnerability narrative directly describes failed unmapping, retries, and warnings. No mechanism demonstrating those broader impacts is provided. Version metadata is also inconsistent, including duplicate commit identifiers and an affected version “0,” reducing confidence in precise range interpretation.
Mitigation direction
Install the distribution or kernel-vendor update containing the cited upstream correction.
Prioritize AMD IOMMU hosts running versions identified as affected.
Consult vendor guidance when backport status cannot be established from the running version.
Restrict unnecessary local access until affected systems are updated.
Validation and detection
Inventory kernel versions and identify systems using AMD IOMMU.
Confirm each distribution package includes one of the cited corrective commits or an equivalent backport.
Review kernel logs for IOMMU unmap failures, retries, or WARN_ON events.
Recheck affected-version status with the applicable distribution security advisory.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2025-39961 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
5Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.