CVE-2025-71202 Overview
A vulnerability has been identified in the Linux kernel's IOMMU Shared Virtual Addressing (SVA) subsystem related to stale IOTLB (Input/Output Translation Lookaside Buffer) entries for the kernel address space. The vulnerability exists in how the kernel manages IOTLB paging cache entries when kernel page table pages are freed and reused.
The issue manifests primarily through vfree() operations, which are common occurrences that can be triggered by unprivileged users. When kernel page table pages are freed without proper IOTLB invalidation, stale cache entries may persist, leading to potential memory corruption or use-after-free conditions in the IOMMU context.
Critical Impact
Unprivileged users can trigger stale IOTLB entries through common vfree() operations on x86 systems with SVA enabled, potentially leading to memory corruption or system instability.
Affected Products
- Linux kernel with IOMMU/SVA support on x86 architecture
- Systems utilizing combined user and kernel page tables with IOMMU
- x86 platforms with SVA (Shared Virtual Addressing) enabled
Discovery Timeline
- 2026-02-14 - CVE-2025-71202 published to NVD
- 2026-02-18 - Last updated in NVD database
Technical Details for CVE-2025-71202
Vulnerability Analysis
This vulnerability affects the Linux kernel's IOMMU Shared Virtual Addressing (SVA) implementation on x86 architecture. The core issue stems from the lack of proper IOTLB cache invalidation when kernel page table pages are freed and potentially reused.
The IOTLB serves as a hardware cache for I/O address translations, similar to how the TLB caches CPU address translations. When the kernel frees page table pages (particularly through operations like vfree()), the IOMMU may retain stale translation entries in its IOTLB. If these pages are subsequently reused, the stale IOTLB entries could map I/O operations to incorrect physical memory locations.
The vulnerability is particularly concerning because vfree() is a common kernel operation that can be triggered by unprivileged users through various system call paths. While the kernel's developers have noted an additional edge case related to memory unplug of reserved boot memory, this secondary issue cannot be triggered by unprivileged users.
Root Cause
The root cause is the absence of an IOMMU notification mechanism to flush IOTLB paging cache entries when kernel page table pages are freed. The x86 architecture code that manages combined user and kernel page tables did not have a proper interface to notify the IOMMU subsystem before freeing and reusing kernel page table pages.
Without this notification mechanism, stale IOTLB entries persist after page table pages are freed, creating a window where DMA operations could use outdated address translations. This is a synchronization issue between the CPU's view of memory mappings and the IOMMU's cached translations.
Attack Vector
The attack vector involves triggering vfree() operations from unprivileged user space. An attacker could potentially exploit this by:
- Causing kernel memory allocations and deallocations through legitimate system operations
- Triggering vfree() calls that free kernel page table pages
- Exploiting the window where stale IOTLB entries exist to cause memory corruption
The vulnerability requires local access and the ability to trigger kernel memory operations. While the direct exploitation path may be limited, the potential for memory corruption through stale DMA mappings presents a significant stability and security concern.
Detection Methods for CVE-2025-71202
Indicators of Compromise
- Unexpected IOMMU page faults or errors in kernel logs related to stale translations
- Memory corruption symptoms in systems with active DMA operations and SVA enabled
- Kernel warnings or errors related to IOTLB inconsistencies in dmesg output
- System instability following heavy memory allocation/deallocation workloads
Detection Strategies
- Monitor kernel logs for IOMMU-related warnings or page fault messages indicating translation inconsistencies
- Implement kernel probes or tracing on vfree() paths when debugging suspected exploitation attempts
- Check system configuration for SVA enablement on x86 platforms using dmesg | grep -i sva or IOMMU driver status
- Review /sys/kernel/iommu_groups/ for IOMMU configuration and monitor for anomalous behavior
Monitoring Recommendations
- Enable verbose IOMMU logging during investigation periods to capture translation-related events
- Monitor system stability metrics, particularly during memory-intensive workloads with active device I/O
- Configure alerts for IOMMU fault messages in centralized logging systems
- Regularly review kernel audit logs for unusual memory operation patterns
How to Mitigate CVE-2025-71202
Immediate Actions Required
- Update the Linux kernel to a patched version that includes the IOTLB invalidation fix for kernel address space
- Review systems with IOMMU SVA enabled on x86 architecture to assess exposure
- Consider temporarily disabling SVA if patches cannot be immediately applied and the feature is not critical
- Monitor systems for signs of instability related to IOMMU operations
Patch Information
The Linux kernel developers have introduced a new IOMMU interface to flush IOTLB paging cache entries for the CPU kernel address space. This interface is invoked from the x86 architecture code that manages combined user and kernel page tables, specifically before any kernel page table page is freed and reused.
The fix enables SVA on x86 architecture with proper notification mechanisms to flush the paging cache before freeing CPU kernel page table pages.
Patch References:
Workarounds
- Disable IOMMU SVA support on x86 systems by adding iommu.passthrough=1 or equivalent kernel command-line parameters if SVA is not required
- Limit unprivileged user access to systems where SVA is critical and cannot be disabled
- Reduce memory allocation churn on affected systems to minimize exposure through vfree() operations
- Implement network segmentation to reduce exposure of vulnerable systems running critical workloads
# Check if SVA is enabled on your system
dmesg | grep -i "sva\|iommu"
# To disable IOMMU passthrough as a workaround (add to GRUB configuration)
# Edit /etc/default/grub and add to GRUB_CMDLINE_LINUX:
# iommu.passthrough=1
# Then update GRUB configuration
sudo update-grub
sudo reboot
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

