CVE Catalog

CVE-2026-89809

Unknown
Published: Updated: Translated: NVD NIST

Summary

A NULL pointer dereference vulnerability exists in the Linux kernel's drm/amdkfd driver within the pqm_debugfs_mqds function. Reading /sys/kernel/debug/kfd/mqds while a process holds an active KFD queue causes dereference of an uninitialized mqd_mgr pointer, because the loop calling mqd_mgr->debugfs_show_mqd() is placed outside the if (pqn->q) block. This leads to a kernel crash (oops) and denial of service.

Risk Assessment

A local user or process with debugfs access can trigger a kernel crash, causing denial of service (DoS) for the entire system. In environments with active KFD queues (e.g., GPU compute), the risk of accidental or intentional triggering is real.

Recommendation

Update the Linux kernel to a version containing the fix that moves the loop inside the if (pqn->q) block. If updating is not possible, restrict access to /sys/kernel/debug/kfd/mqds to trusted users only.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds Reading /sys/kernel/debug/kfd/mqds while a process holds an active KFD queue triggers a NULL pointer dereference because the for loop that calls mqd_mgr->debugfs_show_mqd() is incorrectly placed outside the if (pqn->q) block that initializes mqd_mgr. The queue list can contain entries where pqn->q is NULL (kernel queues where only pqn->kq is valid). In the original code: if (pqn->q) { ... mqd_mgr = q->device->dqm->mqd_mgrs[mqd_type]; size = mqd_mgr->mqd_stride(...); } for (xcc = 0; xcc < num_xccs; xcc++) { // WRONG: outside if block mqd = q->mqd + size * xcc; r = mqd_mgr->debugfs_show_mqd(m, mqd); } When iterating over a queue node where pqn->q is NULL: 1. The if (pqn->q) block is skipped 2. mqd_mgr remains uninitialized (NULL from declaration) 3. The for loop executes anyway 4. mqd_mgr->debugfs_show_mqd(m, mqd) dereferences NULL The crash manifests as: BUG: kernel NULL pointer dereference, address: 0000000000000000 #PF: supervisor instruction fetch in kernel mode RIP: 0010:0x0 Call Trace: pqm_debugfs_mqds+0x10c/0x1d0 [amdgpu] kfd_debugfs_mqds_by_process+0x9b/0x110 [amdgpu] seq_read_iter+0x132/0x4b0 ... Fix by moving the for loop inside the if (pqn->q) block, so mqd_mgr and related variables are only used when properly initialized. (cherry picked from commit 8bfe29d5c798940f797aa24135d2734c3ffce9de)

Vulnerability data from NVD (NIST) · CISA KEV · EPSS