unknown

CVE-2026-99148

A reference counting flaw in the Linux kernel's amdgpu driver allows a Buffer Object (BO) to be evicted while user-space GPU queues still ho

Overview

A reference counting flaw in the Linux kernel's amdgpu driver allows a Buffer Object (BO) to be evicted while user-space GPU queues still hold active mappings. This occurs because the eviction fence is detached when any handle to the BO is closed, rather than only when the last reference to the underlying virtual address space is released. The issue can lead to use-after-free conditions or GPU hangs on systems using AMD graphics hardware.

Description

In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: keep the eviction fence until the last handle is closed amdgpu_gem_object_close() detaches the user queue eviction fence from the BO before it checks bo_va->ref_count, so closing any handle of a BO removes the fence, even when the file still has another handle to the BO and the bo_va with its GPU mappings stays. The BO can then be evicted without suspending the user queues of the file, which keep accessing it through mappings that are only marked for update. Seen on navi31 with a SDMA user queue: a BO opened twice in the same file (GEM_FLINK + GEM_OPEN) loses its eviction fence when the second handle is closed (traced attach/detach of the fence): attach bo=ffff8c78a6c84c00 GEM_CLOSE handle=7 detach bo=ffff8c78a6c84c00 while handle 6 and the mapping are still in use. Only detach the fence when the last reference to the bo_va goes away, matching amdgpu_gem_object_open(), which attaches it only when the bo_va is created. With this the fence stays until the file is closed. (cherry picked from commit 8387982f03d4026b7dc11b0b5e3118298eee4d6a)

Impact

Confidentiality and Integrity: An attacker with local access could potentially trigger memory corruption by forcing eviction of a BO still in use by a GPU queue, leading to data corruption or kernel crashes. Availability: The system may experience GPU hangs or kernel panics, resulting in denial of service. This primarily impacts systems running the affected Linux kernel version with AMD GPU hardware where multiple handles to the same BO are opened within the same file descriptor.

Remediation

Apply the kernel patch that modifies amdgpu_gem_object_close() to detach the eviction fence only when the bo_va reference count reaches zero. Update the Linux kernel to a version containing the fix (commit 8387982f03d4026b7dc11b0b5e3118298eee4d6a or later). Monitor system logs for unexpected GPU resets or amdgpu driver errors as a potential indicator of exploitation attempts or instability.

Risk context

Severity is currently unknown as no CVSS score or EPSS probability has been assigned. The vulnerability requires local access and specific GPU driver usage patterns, limiting immediate remote exploitability. Defenders should prioritize patching based on the availability of the upstream kernel fix and the criticality of the affected systems.

Affected products

  • Linux Kernel (amdgpu driver)
  • AMD Radeon Graphics (Navi31 and similar)

Scores

Severity
unknown
CVSS v2
—
CVSS v3
—
CVSS v4
—
EPSS
—

linux-kernel amdgpu use-after-free local-privilege-escalation gpu-driver memory-corruption

← All CVEs