<?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 10:56:07 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-37786 — net: dsa: free routing table on probe failure</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-37786</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: dsa: free routing table on probe failure&lt;/p&gt;
&lt;p&gt;If complete = true in dsa_tree_setup(), it means that we are the last
switch of the tree which is successfully probing, and we should be
setting up all switches from our probe path.&lt;/p&gt;
&lt;p&gt;After &amp;#34;complete&amp;#34; becomes true, dsa_tree_setup_cpu_ports() or any
subsequent function may fail. If that happens, the entire tree setup is
in limbo: the first N-1 switches have successfully finished probing
(doing nothing but having allocated persistent memory in the tree&amp;#39;s
dst-&amp;gt;ports, and maybe dst-&amp;gt;rtable), and switch N failed to probe, ending
the tree setup process before anything is tangible from the user&amp;#39;s PoV.&lt;/p&gt;
&lt;p&gt;If switch N fails to probe, its memory (ports) will be freed and removed
from dst-&amp;gt;ports. However, the dst-&amp;gt;rtable elements pointing to its ports,
as created by dsa_link_touch(), will remain there, and will lead to
use-after-free if dereferenced.&lt;/p&gt;
&lt;p&gt;If dsa_tree_setup_switches() returns -EPROBE_DEFER, which is entirely
possible because that is where ds-&amp;gt;ops-&amp;gt;setup() is, we get a kasan
report like this:&lt;/p&gt;
&lt;p&gt;==================================================================
BUG: KASAN: slab-use-after-free in mv88e6xxx_setup_upstream_port+0x240/0x568
Read of size 8 at addr ffff000004f56020 by task kworker/u8:3/42&lt;/p&gt;
&lt;p&gt;Call trace:
 __asan_report_load8_noabort+0x20/0x30
 mv88e6xxx_setup_upstream_port+0x240/0x568
 mv88e6xxx_setup+0xebc/0x1eb0
 dsa_register_switch+0x1af4/0x2ae0
 mv88e6xx…&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: dsa: free routing table on probe failure&lt;/p&gt;
&lt;p&gt;If complete = true in dsa_tree_setup(), it means that we are the last
switch of the tree which is successfully probing, and we should be
setting up all switches from our probe path.&lt;/p&gt;
&lt;p&gt;After &amp;#34;complete&amp;#34; becomes true, dsa_tree_setup_cpu_ports() or any
subsequent function may fail. If that happens, the entire tree setup is
in limbo: the first N-1 switches have successfully finished probing
(doing nothing but having allocated persistent memory in the tree&amp;#39;s
dst-&amp;gt;ports, and maybe dst-&amp;gt;rtable), and switch N failed to probe, ending
the tree setup process before anything is tangible from the user&amp;#39;s PoV.&lt;/p&gt;
&lt;p&gt;If switch N fails to probe, its memory (ports) will be freed and removed
from dst-&amp;gt;ports. However, the dst-&amp;gt;rtable elements pointing to its ports,
as created by dsa_link_touch(), will remain there, and will lead to
use-after-free if dereferenced.&lt;/p&gt;
&lt;p&gt;If dsa_tree_setup_switches() returns -EPROBE_DEFER, which is entirely
possible because that is where ds-&amp;gt;ops-&amp;gt;setup() is, we get a kasan
report like this:&lt;/p&gt;
&lt;p&gt;==================================================================
BUG: KASAN: slab-use-after-free in mv88e6xxx_setup_upstream_port+0x240/0x568
Read of size 8 at addr ffff000004f56020 by task kworker/u8:3/42&lt;/p&gt;
&lt;p&gt;Call trace:
 __asan_report_load8_noabort+0x20/0x30
 mv88e6xxx_setup_upstream_port+0x240/0x568
 mv88e6xxx_setup+0xebc/0x1eb0
 dsa_register_switch+0x1af4/0x2ae0
 mv88e6xx…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-37786</guid>
    </item>
  </channel>
</rss>
