<?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://cve.radiocsirt.org</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>Mon, 19 Oct 2026 04:14:25 +0000</lastBuildDate>
    <item>
      <title>CVE-2022-49808 — net: dsa: don't leak tagger-owned storage on switch driver unbind</title>
      <link>https://cve.radiocsirt.org/vuln/cve-2022-49808</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: don&amp;#39;t leak tagger-owned storage on switch driver unbind&lt;/p&gt;
&lt;p&gt;In the initial commit dc452a471dba (&amp;#34;net: dsa: introduce tagger-owned
storage for private and shared data&amp;#34;), we had a call to
tag_ops-&amp;gt;disconnect(dst) issued from dsa_tree_free(), which is called at
tree teardown time.&lt;/p&gt;
&lt;p&gt;There were problems with connecting to a switch tree as a whole, so this
got reworked to connecting to individual switches within the tree. In
this process, tag_ops-&amp;gt;disconnect(ds) was made to be called only from
switch.c (cross-chip notifiers emitted as a result of dynamic tag proto
changes), but the normal driver teardown code path wasn&amp;#39;t replaced with
anything.&lt;/p&gt;
&lt;p&gt;Solve this problem by adding a function that does the opposite of
dsa_switch_setup_tag_protocol(), which is called from the equivalent
spot in dsa_switch_teardown(). The positioning here also ensures that we
won&amp;#39;t have any use-after-free in tagging protocol (*rcv) ops, since the
teardown sequence is as follows:&lt;/p&gt;
&lt;p&gt;dsa_tree_teardown
-&amp;gt; dsa_tree_teardown_master
   -&amp;gt; dsa_master_teardown
      -&amp;gt; unsets master-&amp;gt;dsa_ptr, making no further packets match the
         ETH_P_XDSA packet type handler
-&amp;gt; dsa_tree_teardown_ports
   -&amp;gt; dsa_port_teardown
      -&amp;gt; dsa_slave_destroy
         -&amp;gt; unregisters DSA net devices, there is even a synchronize_net()
            in unregister_netdevice_many()
-&amp;gt; dsa_tree_teardown_switches
   -&amp;gt; dsa_switch_teardown
      -&amp;gt; dsa_switch_teardown…&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: don&amp;#39;t leak tagger-owned storage on switch driver unbind&lt;/p&gt;
&lt;p&gt;In the initial commit dc452a471dba (&amp;#34;net: dsa: introduce tagger-owned
storage for private and shared data&amp;#34;), we had a call to
tag_ops-&amp;gt;disconnect(dst) issued from dsa_tree_free(), which is called at
tree teardown time.&lt;/p&gt;
&lt;p&gt;There were problems with connecting to a switch tree as a whole, so this
got reworked to connecting to individual switches within the tree. In
this process, tag_ops-&amp;gt;disconnect(ds) was made to be called only from
switch.c (cross-chip notifiers emitted as a result of dynamic tag proto
changes), but the normal driver teardown code path wasn&amp;#39;t replaced with
anything.&lt;/p&gt;
&lt;p&gt;Solve this problem by adding a function that does the opposite of
dsa_switch_setup_tag_protocol(), which is called from the equivalent
spot in dsa_switch_teardown(). The positioning here also ensures that we
won&amp;#39;t have any use-after-free in tagging protocol (*rcv) ops, since the
teardown sequence is as follows:&lt;/p&gt;
&lt;p&gt;dsa_tree_teardown
-&amp;gt; dsa_tree_teardown_master
   -&amp;gt; dsa_master_teardown
      -&amp;gt; unsets master-&amp;gt;dsa_ptr, making no further packets match the
         ETH_P_XDSA packet type handler
-&amp;gt; dsa_tree_teardown_ports
   -&amp;gt; dsa_port_teardown
      -&amp;gt; dsa_slave_destroy
         -&amp;gt; unregisters DSA net devices, there is even a synchronize_net()
            in unregister_netdevice_many()
-&amp;gt; dsa_tree_teardown_switches
   -&amp;gt; dsa_switch_teardown
      -&amp;gt; dsa_switch_teardown…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://cve.radiocsirt.org/vuln/cve-2022-49808</guid>
    </item>
  </channel>
</rss>
