<?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, 30 Sep 2026 11:59:52 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-74691 — net: thunderbolt: Tear down DMA paths before stopping the rings</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-74691</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;net: thunderbolt: Tear down DMA paths before stopping the rings&lt;/p&gt;
&lt;p&gt;tbnet_tear_down() stops both rings and frees their frame buffers before
calling tb_xdomain_disable_paths().  tb_ring_stop() zeroes the ring&amp;#39;s
descriptor base and tbnet_free_buffers() unmaps and frees the pages the
frames sit in, so by the time __tb_path_deactivate_hop() polls the hop&amp;#39;s
&amp;#39;pending&amp;#39; bit, anything still in flight has nowhere to drain to.&lt;/p&gt;
&lt;p&gt;The teardown sequence has been in this order since the driver was added.
The setup path has not: commit ff7cd07f3064 (&amp;#34;net: thunderbolt: Enable
DMA paths only after rings are enabled&amp;#34;) moved the path enable to the end
of tbnet_connected_work() and documented why:&lt;/p&gt;
&lt;p&gt;/* Both logins successful so enable the rings, high-speed DMA
	 * paths and start the network device queue.
	 *
	 * Note we enable the DMA paths last to make sure we have primed
	 * the Rx ring before any incoming packets are allowed to
	 * arrive.
	 */&lt;/p&gt;
&lt;p&gt;Teardown was never updated to match, so the rings and the paths now come
down in the same order they go up instead of in reverse.&lt;/p&gt;
&lt;p&gt;On an ASMedia ASM4242 host router the &amp;#39;pending&amp;#39; bit then never clears:
every teardown burns the full 500 ms timeout and
__tb_path_deactivate_hop() returns -ETIMEDOUT.  Raising the timeout to
5 s does not help, so the hop is not slow to drain, it never drains
at all.&lt;/p&gt;
&lt;p&gt;The failure is invisible above the thunderbolt core.
__tb_path_deactivate_hops() is void and…&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;net: thunderbolt: Tear down DMA paths before stopping the rings&lt;/p&gt;
&lt;p&gt;tbnet_tear_down() stops both rings and frees their frame buffers before
calling tb_xdomain_disable_paths().  tb_ring_stop() zeroes the ring&amp;#39;s
descriptor base and tbnet_free_buffers() unmaps and frees the pages the
frames sit in, so by the time __tb_path_deactivate_hop() polls the hop&amp;#39;s
&amp;#39;pending&amp;#39; bit, anything still in flight has nowhere to drain to.&lt;/p&gt;
&lt;p&gt;The teardown sequence has been in this order since the driver was added.
The setup path has not: commit ff7cd07f3064 (&amp;#34;net: thunderbolt: Enable
DMA paths only after rings are enabled&amp;#34;) moved the path enable to the end
of tbnet_connected_work() and documented why:&lt;/p&gt;
&lt;p&gt;/* Both logins successful so enable the rings, high-speed DMA
	 * paths and start the network device queue.
	 *
	 * Note we enable the DMA paths last to make sure we have primed
	 * the Rx ring before any incoming packets are allowed to
	 * arrive.
	 */&lt;/p&gt;
&lt;p&gt;Teardown was never updated to match, so the rings and the paths now come
down in the same order they go up instead of in reverse.&lt;/p&gt;
&lt;p&gt;On an ASMedia ASM4242 host router the &amp;#39;pending&amp;#39; bit then never clears:
every teardown burns the full 500 ms timeout and
__tb_path_deactivate_hop() returns -ETIMEDOUT.  Raising the timeout to
5 s does not help, so the hop is not slow to drain, it never drains
at all.&lt;/p&gt;
&lt;p&gt;The failure is invisible above the thunderbolt core.
__tb_path_deactivate_hops() is void and…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-74691</guid>
    </item>
  </channel>
</rss>
