<?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>Thu, 01 Oct 2026 21:50:56 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-45907 — net/mlx5e: Fix deadlocks between devlink and netdev instance locks</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-45907</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/mlx5e: Fix deadlocks between devlink and netdev instance locks&lt;/p&gt;
&lt;p&gt;In the mentioned &amp;#34;Fixes&amp;#34; commit, various work tasks triggering devlink
health reporter recovery were switched to use netdev_trylock to protect
against concurrent tear down of the channels being recovered. But this
had the side effect of introducing potential deadlocks because of
incorrect lock ordering.&lt;/p&gt;
&lt;p&gt;The correct lock order is described by the init flow:
probe_one -&amp;gt; mlx5_init_one (acquires devlink lock)
-&amp;gt; mlx5_init_one_devl_locked -&amp;gt; mlx5_register_device
-&amp;gt; mlx5_rescan_drivers_locked -...-&amp;gt; mlx5e_probe -&amp;gt; _mlx5e_probe
-&amp;gt; register_netdev (acquires rtnl lock)
-&amp;gt; register_netdevice (acquires netdev lock)
=&amp;gt; devlink lock -&amp;gt; rtnl lock -&amp;gt; netdev lock.&lt;/p&gt;
&lt;p&gt;But in the current recovery flow, the order is wrong:
mlx5e_tx_err_cqe_work (acquires netdev lock)
-&amp;gt; mlx5e_reporter_tx_err_cqe -&amp;gt; mlx5e_health_report
-&amp;gt; devlink_health_report (acquires devlink lock =&amp;gt; boom!)
-&amp;gt; devlink_health_reporter_recover
-&amp;gt; mlx5e_tx_reporter_recover -&amp;gt; mlx5e_tx_reporter_recover_from_ctx
-&amp;gt; mlx5e_tx_reporter_err_cqe_recover&lt;/p&gt;
&lt;p&gt;The same pattern exists in:
mlx5e_reporter_rx_timeout
mlx5e_reporter_tx_ptpsq_unhealthy
mlx5e_reporter_tx_timeout&lt;/p&gt;
&lt;p&gt;Fix these by moving the netdev_trylock calls from the work handlers
lower in the call stack, in the respective recovery functions, where
they are actually necessary.&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/mlx5e: Fix deadlocks between devlink and netdev instance locks&lt;/p&gt;
&lt;p&gt;In the mentioned &amp;#34;Fixes&amp;#34; commit, various work tasks triggering devlink
health reporter recovery were switched to use netdev_trylock to protect
against concurrent tear down of the channels being recovered. But this
had the side effect of introducing potential deadlocks because of
incorrect lock ordering.&lt;/p&gt;
&lt;p&gt;The correct lock order is described by the init flow:
probe_one -&amp;gt; mlx5_init_one (acquires devlink lock)
-&amp;gt; mlx5_init_one_devl_locked -&amp;gt; mlx5_register_device
-&amp;gt; mlx5_rescan_drivers_locked -...-&amp;gt; mlx5e_probe -&amp;gt; _mlx5e_probe
-&amp;gt; register_netdev (acquires rtnl lock)
-&amp;gt; register_netdevice (acquires netdev lock)
=&amp;gt; devlink lock -&amp;gt; rtnl lock -&amp;gt; netdev lock.&lt;/p&gt;
&lt;p&gt;But in the current recovery flow, the order is wrong:
mlx5e_tx_err_cqe_work (acquires netdev lock)
-&amp;gt; mlx5e_reporter_tx_err_cqe -&amp;gt; mlx5e_health_report
-&amp;gt; devlink_health_report (acquires devlink lock =&amp;gt; boom!)
-&amp;gt; devlink_health_reporter_recover
-&amp;gt; mlx5e_tx_reporter_recover -&amp;gt; mlx5e_tx_reporter_recover_from_ctx
-&amp;gt; mlx5e_tx_reporter_err_cqe_recover&lt;/p&gt;
&lt;p&gt;The same pattern exists in:
mlx5e_reporter_rx_timeout
mlx5e_reporter_tx_ptpsq_unhealthy
mlx5e_reporter_tx_timeout&lt;/p&gt;
&lt;p&gt;Fix these by moving the netdev_trylock calls from the work handlers
lower in the call stack, in the respective recovery functions, where
they are actually necessary.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-45907</guid>
    </item>
  </channel>
</rss>
