{"id":24496,"date":"2026-09-16T20:32:23","date_gmt":"2026-09-16T12:32:23","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89809"},"modified":"2026-09-16T20:32:23","modified_gmt":"2026-09-16T12:32:23","slug":"cve-2026-89809","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89809","title":{"rendered":"CVE-2026-89809 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ndrm\/amdkfd: fix scope"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds<\/p>\n<p>Reading \/sys\/kernel\/debug\/kfd\/mqds while a process holds an active KFD<br \/>\nqueue triggers a NULL pointer dereference because the for loop that<br \/>\ncalls mqd_mgr-&gt;debugfs_show_mqd() is incorrectly placed outside the<br \/>\nif (pqn-&gt;q) block that initializes mqd_mgr.<\/p>\n<p>The queue list can contain entries where pqn-&gt;q is NULL (kernel queues<br \/>\nwhere only pqn-&gt;kq is valid). In the original code:<\/p>\n<p>  if (pqn-&gt;q) {<br \/>\n      &#8230;<br \/>\n      mqd_mgr = q-&gt;device-&gt;dqm-&gt;mqd_mgrs[mqd_type];<br \/>\n      size = mqd_mgr-&gt;mqd_stride(&#8230;);<br \/>\n  }<\/p>\n<p>  for (xcc = 0; xcc mqd + size * xcc;<br \/>\n      r = mqd_mgr-&gt;debugfs_show_mqd(m, mqd);<br \/>\n  }<\/p>\n<p>When iterating over a queue node where pqn-&gt;q is NULL:<br \/>\n1. The if (pqn-&gt;q) block is skipped<br \/>\n2. mqd_mgr remains uninitialized (NULL from declaration)<br \/>\n3. The for loop executes anyway<br \/>\n4. mqd_mgr-&gt;debugfs_show_mqd(m, mqd) dereferences NULL<\/p>\n<p>The crash manifests as:<\/p>\n<p>  BUG: kernel NULL pointer dereference, address: 0000000000000000<br \/>\n  #PF: supervisor instruction fetch in kernel mode<br \/>\n  RIP: 0010:0x0<br \/>\n  Call Trace:<br \/>\n   pqm_debugfs_mqds+0x10c\/0x1d0 [amdgpu]<br \/>\n   kfd_debugfs_mqds_by_process+0x9b\/0x110 [amdgpu]<br \/>\n   seq_read_iter+0x132\/0x4b0<br \/>\n   &#8230;<\/p>\n<p>Fix by moving the for loop inside the if (pqn-&gt;q) block, so mqd_mgr<br \/>\nand related variables are only used when properly initialized.<\/p>\n<p>(cherry picked from commit 8bfe29d5c798940f797aa24135d2734c3ffce9de)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>drm\/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds<\/p>\n<p>Reading \/sys\/kernel\/debug\/kfd\/mqds while a process holds an activ<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-24496","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/24496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}