<?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>Wed, 07 Oct 2026 18:30:27 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98344 — dmaengine: Fix device kref underflow in dma_chan_put()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-98344</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;dmaengine: Fix device kref underflow in dma_chan_put()&lt;/p&gt;
&lt;p&gt;dma_chan_get() takes chan-&amp;gt;device-&amp;gt;ref only on the slow path:&lt;/p&gt;
&lt;p&gt;/* no kref on fast path */
	if (chan-&amp;gt;client_count) {
		__module_get(owner);
		chan-&amp;gt;client_count++;
		return 0;
	}
	if (!try_module_get(owner))
		return -ENODEV;
	if (!dma_device_get(chan-&amp;gt;device)) { // calls kref_get_unless_zero()&lt;/p&gt;
&lt;p&gt;dma_chan_put() drops the ref unconditionally, so every fast-path
get/put pair drops one extra device reference.&lt;/p&gt;
&lt;p&gt;The bug fires when two conditions hold together: a non-private
provider has a persistent client holding chan-&amp;gt;client_count &amp;gt; 0
and another client cycles dmaengine_get()/dmaengine_put().
When the kref hits zero, the subsequent dma_find_channel() returns
NULL even though the provider module is still loaded.&lt;/p&gt;
&lt;p&gt;Fix this by dropping device-&amp;gt;ref only on the last put, matching the
single slow-path get.&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;dmaengine: Fix device kref underflow in dma_chan_put()&lt;/p&gt;
&lt;p&gt;dma_chan_get() takes chan-&amp;gt;device-&amp;gt;ref only on the slow path:&lt;/p&gt;
&lt;p&gt;/* no kref on fast path */
	if (chan-&amp;gt;client_count) {
		__module_get(owner);
		chan-&amp;gt;client_count++;
		return 0;
	}
	if (!try_module_get(owner))
		return -ENODEV;
	if (!dma_device_get(chan-&amp;gt;device)) { // calls kref_get_unless_zero()&lt;/p&gt;
&lt;p&gt;dma_chan_put() drops the ref unconditionally, so every fast-path
get/put pair drops one extra device reference.&lt;/p&gt;
&lt;p&gt;The bug fires when two conditions hold together: a non-private
provider has a persistent client holding chan-&amp;gt;client_count &amp;gt; 0
and another client cycles dmaengine_get()/dmaengine_put().
When the kref hits zero, the subsequent dma_find_channel() returns
NULL even though the provider module is still loaded.&lt;/p&gt;
&lt;p&gt;Fix this by dropping device-&amp;gt;ref only on the last put, matching the
single slow-path get.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-98344</guid>
    </item>
  </channel>
</rss>
