CVE-2026-89810 Overview
CVE-2026-89810 is a vulnerability in the Linux kernel's AMD Kernel Fusion Driver (amdkfd) component. The flaw resides in the svm_migrate_copy_to_ram function within the Shared Virtual Memory (SVM) migration path. When page migration from device memory to system RAM fails, the driver incorrectly uses DMA addresses to locate struct page* references for release and unlock operations. This behavior is invalid when the IOMMU is enabled and unreliable in general use. The kernel maintainers resolved the issue by ensuring the error path uses the physical page frame number (PFN) to obtain the correct struct page* and by performing dma_unmap on the corresponding system RAM pages.
Critical Impact
A local attacker with low privileges can trigger the faulty error path in AMD GPU SVM migration to cause kernel memory corruption, potentially resulting in denial of service or privilege escalation.
Affected Products
- Linux kernel versions containing the drm/amdkfd SVM migration code prior to the fix
- Systems using AMD GPUs with Heterogeneous System Architecture (HSA) / Kernel Fusion Driver features
- Linux distributions shipping vulnerable stable kernel branches
Discovery Timeline
- 2026-09-16 - CVE-2026-89810 published to NVD
- 2026-09-17 - Last updated in NVD database
Technical Details for CVE-2026-89810
Vulnerability Analysis
The vulnerability affects the AMD Kernel Fusion Driver (amdkfd) subsystem, specifically the Shared Virtual Memory (SVM) migration logic implemented in svm_migrate_copy_to_ram. This function migrates memory pages from GPU device memory back to system RAM. When the migration operation fails, the driver must release and unlock any system pages it has already allocated.
The faulty implementation attempted to locate the struct page* for cleanup using the DMA address returned for the AMD device (adev). This is incorrect because a DMA address is not equivalent to a physical page frame number, particularly when an IOMMU is enabled and maps device-visible addresses to distinct physical addresses. Using the DMA address to resolve a struct page* yields incorrect page references, leading to release and unlock operations on unrelated memory.
Root Cause
The root cause is an incorrect address translation in the error handling path of svm_migrate_copy_to_ram. The driver conflated a bus-visible DMA address with a physical page identifier. Correct behavior requires deriving the PFN from the actual system RAM allocation and using it to obtain the corresponding struct page*. The fix additionally ensures that dma_unmap is invoked on the correct system RAM pages during error unwind, preventing stale IOMMU mappings.
Attack Vector
Exploitation requires local access with low privileges on a system exposing the AMD KFD interface, typically /dev/kfd. An attacker with access to GPU compute interfaces can invoke SVM migration operations and induce failure conditions in svm_migrate_copy_to_ram. Reaching the flawed error path triggers memory mismanagement that can corrupt kernel state, unlock pages the caller does not own, or leave DMA mappings in an inconsistent state. This may lead to denial of service or, under favorable conditions, privilege escalation.
No verified public exploit code is available. See the upstream commits (960c4a8, a2035918, and da87bcad) for technical details on the corrected error path.
Detection Methods for CVE-2026-89810
Indicators of Compromise
- Kernel oops or BUG: messages referencing svm_migrate_copy_to_ram, amdgpu, or amdkfd in dmesg and system logs.
- Unexpected page reference count warnings such as bad page state or page_mapcount errors following GPU compute workloads.
- IOMMU fault entries in kernel logs coinciding with AMD GPU SVM operations.
Detection Strategies
- Monitor kernel logs for crashes or warnings originating in the drm/amdkfd migration code paths on hosts with AMD GPUs.
- Audit installed kernel versions across the fleet and compare against upstream stable trees containing the referenced fix commits.
- Track processes opening /dev/kfd on multi-tenant systems and correlate with subsequent kernel instability.
Monitoring Recommendations
- Enable kernel crash reporting (kdump) to capture faults in the AMD KFD subsystem for post-incident analysis.
- Forward dmesg and journalctl -k output to a centralized logging pipeline for anomaly detection.
- Alert on kernel taint flags being set on GPU compute hosts, which often accompany driver-level faults.
How to Mitigate CVE-2026-89810
Immediate Actions Required
- Apply the upstream Linux kernel patches referenced by commits 960c4a8, a2035918, and da87bcad, or upgrade to a distribution kernel that includes the fix.
- Restrict access to /dev/kfd on shared or multi-tenant systems so only trusted users and services can invoke GPU compute operations.
- Prioritize patching on workstations and servers running AMD GPU compute workloads, including ROCm and HIP environments.
Patch Information
The fix corrects the error path in svm_migrate_copy_to_ram so the driver resolves struct page* from the system RAM PFN rather than from the DMA address, and adds correct dma_unmap calls on failure. Refer to the upstream commits 960c4a8, a2035918, and da87bcad for the authoritative changes and backport information.
Workarounds
- Where patching is not immediately feasible, remove or blocklist the amdkfd module on systems that do not require AMD GPU compute functionality.
- Enforce strict permissions on /dev/kfd using udev rules or group membership to limit which users can trigger SVM migration paths.
- Avoid granting untrusted local users access to GPU compute frameworks such as ROCm on vulnerable hosts until the patched kernel is deployed.
# Verify running kernel and check for the amdkfd module
uname -r
lsmod | grep amdkfd
# Restrict access to the KFD device node (example udev rule)
echo 'KERNEL=="kfd", MODE="0660", GROUP="gpucompute"' | \
sudo tee /etc/udev/rules.d/70-kfd.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
# Optional: blocklist amdkfd on hosts that do not need GPU compute
echo "blacklist amdkfd" | sudo tee /etc/modprobe.d/blacklist-amdkfd.conf
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

