Cloudanix VulnDB

CVE-2026-31765

Medium · 5.5

CVSS

5.5

EPSS

0.1%

Published

May 1, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A local user running AMD GPU workloads on certain Linux systems can crash the machine, disrupting services until it is rebooted and patched.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Denial of service
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This is a local denial-of-service flaw in the Linux kernel AMDGPU/KFD code path on systems using 64 KB kernel pages. The driver reserved too little GPU virtual address space for the AMDGPU trap area while allocating a larger CWSR TBA/TMA region, causing an inconsistent memory reservation/allocation state. When a local user triggers KFD GPU VM initialization through ROCm-related operations, the kernel can hit a NULL pointer dereference and panic or oops, resulting in loss of system availability. The issue does not indicate remote code execution, privilege escalation, or data disclosure based on the provided details.

Why it matters to the business

Affected Linux systems with AMD GPUs, especially ROCm, HPC, AI/ML, or accelerated compute hosts using 64 KB page-size kernels, may crash when ordinary GPU discovery or compute workloads run. This can interrupt jobs, require reboots, cause workload loss, and reduce reliability of shared compute infrastructure. The urgency is moderate: CVSS indicates high availability impact from a local attacker or user process, while EPSS is very low, stable over 30 days, not listed in CISA KEV, not associated with ransomware, and has no known exploit maturity in the provided data.

How an attack unfolds

An attacker must already have local access to an affected Linux system and enough permissions to interact with AMD GPU/KFD interfaces, commonly through membership in GPU-related groups or access to ROCm tooling. On a vulnerable 64 KB page-size kernel with the AMDGPU driver loaded, the attacker runs a program or tool such as ROCm discovery or compute initialization that invokes KFD ioctls and triggers GPU VM setup. During trap/TBA/TMA allocation, the driver’s reserved virtual address space is smaller than the allocation it attempts to manage. This mismatch leads the kernel into an invalid memory access, producing a NULL pointer dereference in the AMDGPU/KFD call path and potentially crashing the host. The likely attacker objective is disruption rather than persistence or data theft.

How to fix it

Upgrade to a Linux kernel build from the operating system or distribution vendor that includes the AMDGPU/KFD fix changing the reserved trap sizing behavior, including the upstream change associated with commit 31b8de5e55666f26ea7ece5f412b83eab3f56dbb or an equivalent backport. No exact fixed package versions were provided, so track vendor advisories for the affected kernel stream and install the first kernel release that explicitly references this CVE or the AMDGPU reserved trap size fix. Where immediate patching is not possible, reduce exposure by restricting local access to GPU device nodes, limiting membership in video/render/ROCm-related groups, avoiding untrusted multi-user GPU workloads, disabling or blacklisting the amdgpu/KFD functionality on systems that do not need it, or scheduling affected GPU workloads on patched kernels only. Reboot into the updated kernel after installation; updating packages without booting the fixed kernel is insufficient.

How to confirm the fix worked

Confirm the running kernel, not just the installed kernel package, is patched. Validate through vendor package metadata, changelogs, or source/backport review that the AMDGPU/KFD fix for the reserved trap size mismatch is present. On source-based or internally built kernels, verify that AMDGPU_VA_RESERVED_TRAP_SIZE and KFD_CWSR_TBA_TMA_SIZE behavior matches the corrected implementation and that allocation size cannot exceed the reserved trap address area on 64 KB page-size systems. Confirm the host page size and exposure by checking kernel configuration and runtime page size, AMDGPU module loading, AMD GPU presence, and access to /dev/kfd or /dev/dri/renderD*. After patching and rebooting, run standard ROCm validation such as rocminfo and representative GPU workloads on a non-production test host and confirm no kernel oops, NULL pointer dereference, or amdgpu/KFD crash messages appear in dmesg or journal logs.

Typical attack path

  1. Obtain local shell or local code execution on a Linux host with an affected kernel, AMDGPU driver, AMD GPU hardware, and 64 KB page-size configuration.
  2. Confirm access to AMD GPU device nodes such as /dev/kfd or /dev/dri/renderD* directly or through GPU/ROCm group membership.
  3. Run ROCm-related discovery, test, or custom code that initializes KFD GPU VM state, such as functionality similar to rocminfo or RCCL tests.
  4. Trigger the vulnerable KFD ioctl path during GPU VM acquisition and CWSR trap/TBA/TMA setup.
  5. Cause a kernel NULL pointer dereference or oops in the amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu / kfd_ioctl_acquire_vm path, leading to system instability or crash.

How to detect it

Look for evidence of prior triggering in kernel and system logs rather than network telemetry, because exploitation is local. Primary sources include dmesg, journalctl -k, /var/log/kern.log, /var/log/messages, crash dump systems, kdump/vmcore records, workload scheduler logs, ROCm application logs, auditd records for GPU device access, and process accounting. Search for kernel oops or panic messages containing AMDGPU/KFD functions, NULL pointer dereferences at address 0x00000002, and processes such as rocminfo or RCCL tests immediately before the crash. Correlate timestamps with users opening /dev/kfd or /dev/dri/renderD* and with GPU jobs launched on shared compute systems. Because the vulnerability causes availability failure, indicators are likely crash traces, reboot events, failed GPU jobs, and kernel stack frames rather than durable malware artifacts. There are no known threat actors, KEV activity, ransomware use, or public exploit maturity in the provided data, so detections should focus on anomalous local triggering and repeated crash attempts.

  • Kernel attempted to read user page (2) - exploit attempt?
  • BUG: Kernel NULL pointer dereference on read at 0x00000002
  • Comm: rocminfo
  • PAGE_SIZE=64K
  • amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu
  • kfd_process_alloc_gpuvm
  • kfd_process_device_init_cwsr_dgpu
  • kfd_process_device_init_vm
  • kfd_ioctl_acquire_vm
  • kfd_ioctl
  • __mutex_add_waiter+0x24/0xc0
  • /dev/kfd
  • /dev/dri/renderD

What your security team should do

  • Prioritize patching shared AMD GPU compute systems, ROCm hosts, HPC clusters, AI/ML worker nodes, and any multi-user Linux servers using 64 KB page-size kernels.
  • Inventory systems with AMD GPUs and loaded amdgpu/KFD components, especially hosts exposing /dev/kfd or /dev/dri/renderD* to non-administrative users or containers.
  • Restrict GPU device-node access to trusted users and workloads until patched; remove unnecessary users from render, video, or ROCm-related access groups.
  • Review kernel logs for prior oops or panic events matching the AMDGPU/KFD stack trace to identify possible prior exploitation or accidental triggering.
  • Coordinate patching with workload owners because remediation requires rebooting into a fixed kernel.
  • If GPU acceleration is not required on a vulnerable host, disable the amdgpu module or KFD access as a temporary mitigation.
  • Monitor vendor advisories for exact fixed kernel package versions because none were provided in the input data.

The record

In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: Change AMDGPU_VA_RESERVED_TRAP_SIZE to 64KB Currently, AMDGPU_VA_RESERVED_TRAP_SIZE is hardcoded to 8KB, while KFD_CWSR_TBA_TMA_SIZE is defined as 2 * PAGE_SIZE. On systems with 4K pages, both values match (8KB), so allocation and reserved space are consistent. However, on 64K page-size systems, KFD_CWSR_TBA_TMA_SIZE becomes 128KB, while the reserved trap area remains 8KB. This mismatch causes the kernel to crash when running rocminfo or rccl unit tests. Kernel attempted to read user page (2) - exploit attempt? (uid: 1001) BUG: Kernel NULL pointer dereference on read at 0x00000002 Faulting instruction address: 0xc0000000002c8a64 Oops: Kernel access of bad area, sig: 11 [#1] LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries CPU: 34 UID: 1001 PID: 9379 Comm: rocminfo Tainted: G E 6.19.0-rc4-amdgpu-00320-gf23176405700 #56 VOLUNTARY Tainted: [E]=UNSIGNED_MODULE Hardware name: IBM,9105-42A POWER10 (architected) 0x800200 0xf000006 of:IBM,FW1060.30 (ML1060_896) hv:phyp pSeries NIP: c0000000002c8a64 LR: c00000000125dbc8 CTR: c00000000125e730 REGS: c0000001e0957580 TRAP: 0300 Tainted: G E MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE> CR: 24008268 XER: 00000036 CFAR: c00000000125dbc4 DAR: 0000000000000002 DSISR: 40000000 IRQMASK: 1 GPR00: c00000000125d908 c0000001e0957820 c0000000016e8100 c00000013d814540 GPR04: 0000000000000002 c00000013d814550 0000000000000045 0000000000000000 GPR08: c00000013444d000 c00000013d814538 c00000013d814538 0000000084002268 GPR12: c00000000125e730 c000007e2ffd5f00 ffffffffffffffff 0000000000020000 GPR16: 0000000000000000 0000000000000002 c00000015f653000 0000000000000000 GPR20: c000000138662400 c00000013d814540 0000000000000000 c00000013d814500 GPR24: 0000000000000000 0000000000000002 c0000001e0957888 c0000001e0957878 GPR28: c00000013d814548 0000000000000000 c00000013d814540 c0000001e0957888 NIP [c0000000002c8a64] __mutex_add_waiter+0x24/0xc0 LR [c00000000125dbc8] __mutex_lock.constprop.0+0x318/0xd00 Call Trace: 0xc0000001e0957890 (unreliable) __mutex_lock.constprop.0+0x58/0xd00 amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu+0x6fc/0xb60 [amdgpu] kfd_process_alloc_gpuvm+0x54/0x1f0 [amdgpu] kfd_process_device_init_cwsr_dgpu+0xa4/0x1a0 [amdgpu] kfd_process_device_init_vm+0xd8/0x2e0 [amdgpu] kfd_ioctl_acquire_vm+0xd0/0x130 [amdgpu] kfd_ioctl+0x514/0x670 [amdgpu] sys_ioctl+0x134/0x180 system_call_exception+0x114/0x300 system_call_vectored_common+0x15c/0x2ec This patch changes AMDGPU_VA_RESERVED_TRAP_SIZE to 64 KB and KFD_CWSR_TBA_TMA_SIZE to the AMD GPU page size. This means we reserve 64 KB for the trap in the address space, but only allocate 8 KB within it. With this approach, the allocation size never exceeds the reserved area. (cherry picked from commit 31b8de5e55666f26ea7ece5f412b83eab3f56dbb)

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities