Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-89808

CVE-2026-89808: Linux Kernel Privilege Escalation Vulnerability

CVE-2026-89808 is a privilege escalation flaw in the Linux kernel affecting the drm/amdkfd driver during SVM migration. This vulnerability could allow attackers to gain elevated privileges. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-89808 Overview

CVE-2026-89808 is a vulnerability in the Linux kernel's AMD Kernel Fusion Driver (amdkfd) affecting the Shared Virtual Memory (SVM) migration path. The flaw resides in svm_migrate_copy_to_vram(), where the driver mishandles migration ranges that are holes on the CPU side. When MIGRATE_PFN_MIGRATE is set without MIGRATE_PFN_VALID, the driver still allocates device pages but performs no DMA mapping. The function svm_migrate_copy_memory_gart() then returns an uninitialized value, which can trigger out_free_vram_pages and drop all VRAM previously set up.

Critical Impact

A local user with GPU access can trigger uninitialized memory use in the amdkfd driver, resulting in kernel memory corruption, VRAM state loss, and potential local privilege escalation or system instability.

Affected Products

  • Linux kernel with the AMD Kernel Fusion Driver (amdkfd) enabled
  • Systems using AMD GPUs with Shared Virtual Memory (SVM) support
  • Distributions shipping affected kernel versions prior to the referenced stable commits

Discovery Timeline

  • 2026-09-16 - CVE-2026-89808 published to the National Vulnerability Database (NVD)
  • 2026-09-17 - Last updated in NVD database

Technical Details for CVE-2026-89808

Vulnerability Analysis

The vulnerability affects the drm/amdkfd subsystem responsible for managing GPU compute workloads and Heterogeneous System Architecture (HSA) memory migration between system RAM and GPU Video RAM (VRAM). The svm_migrate_copy_to_vram() function is responsible for copying pages during migration to device memory.

When a virtual memory range contains a hole on the CPU side, the migration framework signals this by setting the MIGRATE_PFN_MIGRATE flag while leaving MIGRATE_PFN_VALID unset. In the flawed code path, the driver still allocates device pages for these hole regions but skips DMA mapping of source pages. Because no source pages are mapped, the loop counter j remains zero.

The subsequent call to svm_migrate_copy_memory_gart() returns an uninitialized return value r. That garbage value can propagate into error-handling logic, causing the out_free_vram_pages label to execute and release all VRAM allocations that were previously established for the migration.

Root Cause

The root cause is uninitialized memory use combined with improper handling of a boundary condition. The variable r was not initialized before conditional assignment paths, and the code assumed svm_migrate_copy_memory_gart() would always be called. When migration ranges are entirely holes, no GART copy occurs, leaving r undefined and driving erroneous cleanup behavior.

Attack Vector

Exploitation requires local access with permission to interact with the AMD GPU device nodes, typically through the KFD interface (/dev/kfd) or DRM render nodes. A local attacker can craft memory migration requests targeting virtual address ranges containing holes to reach the vulnerable code path. Successful triggering results in VRAM corruption, kernel state inconsistency, and potential exploitation of the uninitialized value for further privilege escalation.

The upstream patch initializes r and gates the final svm_migrate_copy_memory_gart() call on j > 0. It also flushes on the last page when reaching the end of the current drm_buddy_block, avoiding an unnecessary GART copy call. See the Kernel Git Commit 0a9a0e8, Kernel Git Commit 520e345, and Kernel Git Commit ae806a9 for the exact code changes.

Detection Methods for CVE-2026-89808

Indicators of Compromise

  • Unexpected kernel warnings or oops messages referencing svm_migrate_copy_to_vram or svm_migrate_copy_memory_gart in dmesg.
  • Sudden VRAM allocation failures or GPU compute job terminations on systems running AMD ROCm or HSA workloads.
  • Kernel logs showing amdkfd migration errors correlated with local processes accessing /dev/kfd.

Detection Strategies

  • Audit kernel version and package metadata across Linux hosts to identify systems running unpatched amdkfd builds.
  • Monitor process access to /dev/kfd and DRM render nodes from unexpected users or containers.
  • Correlate GPU driver crash telemetry with subsequent kernel instability events to identify potential exploitation attempts.

Monitoring Recommendations

  • Forward kernel logs (journald, syslog) to a centralized analytics platform and alert on amdkfd fault signatures.
  • Track userspace processes invoking KFD ioctls performing SVM range migrations against baseline behavior.
  • Enable kernel address sanitizer (KASAN) or KMSAN in test environments to surface uninitialized memory conditions during validation.

How to Mitigate CVE-2026-89808

Immediate Actions Required

  • Update the Linux kernel to a version containing the fix from commits 0a9a0e8, 520e345, or ae806a9, based on the applicable stable branch.
  • Restrict access to /dev/kfd and DRM render nodes so that only trusted users and workloads can submit GPU compute jobs.
  • Inventory systems running AMD ROCm, HSA, or GPU compute workloads and prioritize patching those hosts.

Patch Information

The fix initializes the return variable r and only calls svm_migrate_copy_memory_gart() when at least one source page was mapped (j > 0). It also flushes on the last page when reaching the end of the current drm_buddy_block to avoid an extra GART copy. Patches are available in the upstream stable tree: Kernel Git Commit 0a9a0e8, Kernel Git Commit 520e345, and Kernel Git Commit ae806a9.

Workarounds

  • Disable the amdkfd module (modprobe -r amdkfd) on systems that do not require GPU compute functionality.
  • Enforce strict access controls on /dev/kfd using udev rules or group membership restrictions to limit local exposure.
  • Isolate untrusted workloads from hosts with AMD GPU compute enabled until the patched kernel is deployed.
bash
# Verify the running kernel and reload without amdkfd if compute is not needed
uname -r
lsmod | grep amdkfd
sudo modprobe -r amdkfd

# Restrict access to the KFD device node
sudo chgrp render /dev/kfd
sudo chmod 0660 /dev/kfd

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.