<?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 03:07:23 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98342 — dmaengine: wait for RCU readers before releasing dma_device</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-98342</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: wait for RCU readers before releasing dma_device&lt;/p&gt;
&lt;p&gt;dma_issue_pending_all() walks the dma_device_list with
list_for_each_entry_rcu() under rcu_read_lock(). dma_device_release()
unlinks the device with list_del_rcu() and then calls
device-&amp;gt;device_release() (which in many drivers, such as plx_dma.c,
directly calls kfree()).&lt;/p&gt;
&lt;p&gt;Because there is no grace period between unlinking the device and
freeing it, concurrent RCU readers in dma_issue_pending_all() can
access the device after it has been freed.&lt;/p&gt;
&lt;p&gt;The lockless walk originally relied on clients holding a dmaengine
reference to pin the provider module, and therefore the device, for as
long as they might traverse the list. Commit 8ad342a86359 (&amp;#34;dmaengine:
Add reference counting to dma_device struct&amp;#34;) decoupled the dma_device
lifetime from the module reference, so the device can now be released
while a reader is still walking the list.&lt;/p&gt;
&lt;p&gt;Add synchronize_rcu() before the device is freed, so RCU readers are
guaranteed to have finished. Keep it unconditional: providers that do
not implement device_release() free the device themselves once
dma_async_device_unregister() returns. This call will delay for a grace
period with dma_list_mutex held, which is safe and only teardown path is
delayed.&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: wait for RCU readers before releasing dma_device&lt;/p&gt;
&lt;p&gt;dma_issue_pending_all() walks the dma_device_list with
list_for_each_entry_rcu() under rcu_read_lock(). dma_device_release()
unlinks the device with list_del_rcu() and then calls
device-&amp;gt;device_release() (which in many drivers, such as plx_dma.c,
directly calls kfree()).&lt;/p&gt;
&lt;p&gt;Because there is no grace period between unlinking the device and
freeing it, concurrent RCU readers in dma_issue_pending_all() can
access the device after it has been freed.&lt;/p&gt;
&lt;p&gt;The lockless walk originally relied on clients holding a dmaengine
reference to pin the provider module, and therefore the device, for as
long as they might traverse the list. Commit 8ad342a86359 (&amp;#34;dmaengine:
Add reference counting to dma_device struct&amp;#34;) decoupled the dma_device
lifetime from the module reference, so the device can now be released
while a reader is still walking the list.&lt;/p&gt;
&lt;p&gt;Add synchronize_rcu() before the device is freed, so RCU readers are
guaranteed to have finished. Keep it unconditional: providers that do
not implement device_release() free the device themselves once
dma_async_device_unregister() returns. This call will delay for a grace
period with dma_list_mutex held, which is safe and only teardown path is
delayed.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-98342</guid>
    </item>
  </channel>
</rss>
