<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 22:12:44 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-89809 — drm/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-89809</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;drm/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds&lt;/p&gt;
&lt;p&gt;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-&amp;gt;debugfs_show_mqd() is incorrectly placed outside the
if (pqn-&amp;gt;q) block that initializes mqd_mgr.&lt;/p&gt;
&lt;p&gt;The queue list can contain entries where pqn-&amp;gt;q is NULL (kernel queues
where only pqn-&amp;gt;kq is valid). In the original code:&lt;/p&gt;
&lt;p&gt;if (pqn-&amp;gt;q) {
      ...
      mqd_mgr = q-&amp;gt;device-&amp;gt;dqm-&amp;gt;mqd_mgrs[mqd_type];
      size = mqd_mgr-&amp;gt;mqd_stride(...);
  }&lt;/p&gt;
&lt;p&gt;for (xcc = 0; xcc &amp;lt; num_xccs; xcc++) {  // WRONG: outside if block
      mqd = q-&amp;gt;mqd + size * xcc;
      r = mqd_mgr-&amp;gt;debugfs_show_mqd(m, mqd);
  }&lt;/p&gt;
&lt;p&gt;When iterating over a queue node where pqn-&amp;gt;q is NULL:
1. The if (pqn-&amp;gt;q) block is skipped
2. mqd_mgr remains uninitialized (NULL from declaration)
3. The for loop executes anyway
4. mqd_mgr-&amp;gt;debugfs_show_mqd(m, mqd) dereferences NULL&lt;/p&gt;
&lt;p&gt;The crash manifests as:&lt;/p&gt;
&lt;p&gt;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
   ...&lt;/p&gt;
&lt;p&gt;Fix by moving the for loop inside the if (pqn-&amp;gt;q) block, so mqd_mgr
and related variables are only used when properly initialized.&lt;/p&gt;
&lt;p&gt;(cherry picked from commit 8bfe29d5c798940f79…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;drm/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds&lt;/p&gt;
&lt;p&gt;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-&amp;gt;debugfs_show_mqd() is incorrectly placed outside the
if (pqn-&amp;gt;q) block that initializes mqd_mgr.&lt;/p&gt;
&lt;p&gt;The queue list can contain entries where pqn-&amp;gt;q is NULL (kernel queues
where only pqn-&amp;gt;kq is valid). In the original code:&lt;/p&gt;
&lt;p&gt;if (pqn-&amp;gt;q) {
      ...
      mqd_mgr = q-&amp;gt;device-&amp;gt;dqm-&amp;gt;mqd_mgrs[mqd_type];
      size = mqd_mgr-&amp;gt;mqd_stride(...);
  }&lt;/p&gt;
&lt;p&gt;for (xcc = 0; xcc &amp;lt; num_xccs; xcc++) {  // WRONG: outside if block
      mqd = q-&amp;gt;mqd + size * xcc;
      r = mqd_mgr-&amp;gt;debugfs_show_mqd(m, mqd);
  }&lt;/p&gt;
&lt;p&gt;When iterating over a queue node where pqn-&amp;gt;q is NULL:
1. The if (pqn-&amp;gt;q) block is skipped
2. mqd_mgr remains uninitialized (NULL from declaration)
3. The for loop executes anyway
4. mqd_mgr-&amp;gt;debugfs_show_mqd(m, mqd) dereferences NULL&lt;/p&gt;
&lt;p&gt;The crash manifests as:&lt;/p&gt;
&lt;p&gt;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
   ...&lt;/p&gt;
&lt;p&gt;Fix by moving the for loop inside the if (pqn-&amp;gt;q) block, so mqd_mgr
and related variables are only used when properly initialized.&lt;/p&gt;
&lt;p&gt;(cherry picked from commit 8bfe29d5c798940f79…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-89809</guid>
    </item>
  </channel>
</rss>
