<?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>Thu, 01 Oct 2026 07:16:51 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-31656 — drm/i915/gt: fix refcount underflow in intel_engine_park_heartbeat</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-31656</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/i915/gt: fix refcount underflow in intel_engine_park_heartbeat&lt;/p&gt;
&lt;p&gt;A use-after-free / refcount underflow is possible when the heartbeat
worker and intel_engine_park_heartbeat() race to release the same
engine-&amp;gt;heartbeat.systole request.&lt;/p&gt;
&lt;p&gt;The heartbeat worker reads engine-&amp;gt;heartbeat.systole and calls
i915_request_put() on it when the request is complete, but clears
the pointer in a separate, non-atomic step. Concurrently, a request
retirement on another CPU can drop the engine wakeref to zero, triggering
__engine_park() -&amp;gt; intel_engine_park_heartbeat(). If the heartbeat
timer is pending at that point, cancel_delayed_work() returns true and
intel_engine_park_heartbeat() reads the stale non-NULL systole pointer
and calls i915_request_put() on it again, causing a refcount underflow:&lt;/p&gt;
&lt;p&gt;```
&amp;lt;4&amp;gt; [487.221889] Workqueue: i915-unordered engine_retire [i915]
&amp;lt;4&amp;gt; [487.222640] RIP: 0010:refcount_warn_saturate+0x68/0xb0
...
&amp;lt;4&amp;gt; [487.222707] Call Trace:
&amp;lt;4&amp;gt; [487.222711]  &amp;lt;TASK&amp;gt;
&amp;lt;4&amp;gt; [487.222716]  intel_engine_park_heartbeat.part.0+0x6f/0x80 [i915]
&amp;lt;4&amp;gt; [487.223115]  intel_engine_park_heartbeat+0x25/0x40 [i915]
&amp;lt;4&amp;gt; [487.223566]  __engine_park+0xb9/0x650 [i915]
&amp;lt;4&amp;gt; [487.223973]  ____intel_wakeref_put_last+0x2e/0xb0 [i915]
&amp;lt;4&amp;gt; [487.224408]  __intel_wakeref_put_last+0x72/0x90 [i915]
&amp;lt;4&amp;gt; [487.224797]  intel_context_exit_engine+0x7c/0x80 [i915]
&amp;lt;4&amp;gt; [487.225238]  intel_context_exit+0xf1/0x1b0 [i915]
&amp;lt;4&amp;gt; [487.225695]  i915_request_…&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/i915/gt: fix refcount underflow in intel_engine_park_heartbeat&lt;/p&gt;
&lt;p&gt;A use-after-free / refcount underflow is possible when the heartbeat
worker and intel_engine_park_heartbeat() race to release the same
engine-&amp;gt;heartbeat.systole request.&lt;/p&gt;
&lt;p&gt;The heartbeat worker reads engine-&amp;gt;heartbeat.systole and calls
i915_request_put() on it when the request is complete, but clears
the pointer in a separate, non-atomic step. Concurrently, a request
retirement on another CPU can drop the engine wakeref to zero, triggering
__engine_park() -&amp;gt; intel_engine_park_heartbeat(). If the heartbeat
timer is pending at that point, cancel_delayed_work() returns true and
intel_engine_park_heartbeat() reads the stale non-NULL systole pointer
and calls i915_request_put() on it again, causing a refcount underflow:&lt;/p&gt;
&lt;p&gt;```
&amp;lt;4&amp;gt; [487.221889] Workqueue: i915-unordered engine_retire [i915]
&amp;lt;4&amp;gt; [487.222640] RIP: 0010:refcount_warn_saturate+0x68/0xb0
...
&amp;lt;4&amp;gt; [487.222707] Call Trace:
&amp;lt;4&amp;gt; [487.222711]  &amp;lt;TASK&amp;gt;
&amp;lt;4&amp;gt; [487.222716]  intel_engine_park_heartbeat.part.0+0x6f/0x80 [i915]
&amp;lt;4&amp;gt; [487.223115]  intel_engine_park_heartbeat+0x25/0x40 [i915]
&amp;lt;4&amp;gt; [487.223566]  __engine_park+0xb9/0x650 [i915]
&amp;lt;4&amp;gt; [487.223973]  ____intel_wakeref_put_last+0x2e/0xb0 [i915]
&amp;lt;4&amp;gt; [487.224408]  __intel_wakeref_put_last+0x72/0x90 [i915]
&amp;lt;4&amp;gt; [487.224797]  intel_context_exit_engine+0x7c/0x80 [i915]
&amp;lt;4&amp;gt; [487.225238]  intel_context_exit+0xf1/0x1b0 [i915]
&amp;lt;4&amp;gt; [487.225695]  i915_request_…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-31656</guid>
    </item>
  </channel>
</rss>
