CVE-2026-68245 Overview
CVE-2026-68245 is a use-after-unlock vulnerability in the Linux kernel's AMD GPU (amdgpu) Direct Rendering Manager (DRM) driver. The flaw exists in the amdgpu_vm_get_task_info_pasid() function, which dereferences a virtual memory (VM) pointer after the protecting lock has been released. The vm pointer returned by amdgpu_vm_get_vm_from_pasid() is only valid while the associated xa_lock is held. Once xa_unlock_irqrestore returns, the pointer becomes subject to concurrent modification, and any subsequent dereference of vm->task_info operates on unsynchronized memory.
Critical Impact
A local, authenticated user with access to the AMD GPU device can trigger memory corruption or kernel information disclosure, potentially leading to local privilege escalation on affected Linux systems.
Affected Products
- Linux kernel — mainline branches containing the amdgpu_vm_get_task_info_pasid() implementation
- Distributions shipping the drm/amdgpu driver prior to backporting the referenced stable fixes
- Systems using AMD GPUs relying on PASID-based task info retrieval
Discovery Timeline
- 2026-08-10 - CVE-2026-68245 published to NVD
- 2026-08-13 - Last updated in NVD database
Technical Details for CVE-2026-68245
Vulnerability Analysis
The vulnerability is a lifetime and locking defect in the drm/amdgpu driver. amdgpu_vm_get_vm_from_pasid() performs an XArray lookup under an XArray spinlock and returns a pointer to an amdgpu_vm structure. The lookup helper releases the spinlock through xa_unlock_irqrestore before returning to the caller. The caller, amdgpu_vm_get_task_info_pasid(), then dereferences vm->task_info outside the critical section.
Because the lock no longer protects the vm object, a concurrent code path can free, reassign, or otherwise mutate the structure between the unlock and the dereference. The result is an unsafe read from memory whose contents and validity are not guaranteed, producing a use-after-unlock condition with the same practical impact as a classic use-after-free.
Root Cause
The root cause is a mismatch between the lifetime guarantee of the returned pointer and the caller's usage pattern. The helper function scoped the lock to the lookup itself, but the caller assumed the pointer remained valid for later dereferences. The upstream fix removes amdgpu_vm_get_vm_from_pasid() from amdgpu_vm.c and inlines the lookup logic in the caller, so the lock is held for the entire duration of vm->task_info access.
Attack Vector
Exploitation requires local access with permission to interact with the AMD GPU device node. An attacker races a task info retrieval path against a concurrent code path that releases or reallocates the target amdgpu_vm structure. Winning the race allows reading memory that has been repurposed, which can leak kernel data, corrupt driver state, or, when combined with a heap grooming primitive, escalate privileges.
No synthetic exploit code is included. Refer to the upstream commits for the exact code paths and fix details:
- Kernel Git Commit 04cc4aa3617b
- Kernel Git Commit 1173190412fb
- Kernel Git Commit 5d5fb9124a2b
- Kernel Git Commit fe16a7e5336a
Detection Methods for CVE-2026-68245
Indicators of Compromise
- Unexpected kernel oops or general protection fault traces referencing amdgpu_vm_get_task_info_pasid or amdgpu_vm_get_vm_from_pasid in dmesg or journalctl -k output.
- KASAN reports flagging use-after-free or invalid reads inside the drm/amdgpu PASID task info code path.
- Repeated crashes or hangs of graphics workloads correlating with concurrent GPU compute activity from unprivileged users.
Detection Strategies
- Enable Kernel Address Sanitizer (KASAN) in test kernels to catch the use-after-unlock read at runtime during QA validation.
- Correlate kernel crash telemetry with process context to identify local users invoking GPU ioctls immediately before instability.
- Compare running kernel versions against the fixed commit hashes to identify unpatched hosts in inventory.
Monitoring Recommendations
- Forward /var/log/kern.log and journald kernel events to a centralized log store and alert on amdgpu stack traces.
- Track privileged access to /dev/dri/* device nodes and correlate with subsequent kernel warnings.
- Monitor GPU-enabled workloads on shared or multi-tenant Linux hosts for anomalous crash frequency.
How to Mitigate CVE-2026-68245
Immediate Actions Required
- Apply the upstream stable kernel patches referenced in the CVE record and rebuild or update to a fixed distribution kernel.
- Reboot affected systems after patch installation to load the fixed amdgpu driver.
- Inventory Linux hosts using AMD GPUs, prioritizing multi-user, VDI, and compute-cluster environments.
Patch Information
The fix removes amdgpu_vm_get_vm_from_pasid() and inlines the XArray lookup so that the xa_lock is held for the full duration of vm->task_info access. The change was cherry-picked from upstream commit 9d01579f3f868b333acc901815972685989092c7 and is available in the stable branches referenced by commits 04cc4aa3, 11731904, 5d5fb912, and fe16a7e5 on git.kernel.org.
Workarounds
- Restrict access to /dev/dri/renderD* and /dev/dri/card* device nodes to trusted users via group permissions until the patched kernel is deployed.
- Disable or unload the amdgpu module on systems that do not require AMD GPU acceleration.
- Avoid running untrusted local workloads on shared hosts with unpatched AMD GPU drivers.
# Verify running kernel and amdgpu module status
uname -r
modinfo amdgpu | grep -E '^(version|srcversion|filename)'
# Optional: restrict DRI device access to a trusted group
sudo groupadd -f gpu-trusted
sudo chown root:gpu-trusted /dev/dri/renderD128 /dev/dri/card0
sudo chmod 660 /dev/dri/renderD128 /dev/dri/card0
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

