<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-01T21:51:10.135149+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-45907</id>
    <title>CVE-2026-45907 — net/mlx5e: Fix deadlocks between devlink and netdev instance locks</title>
    <updated>2026-10-01T21:51:10.136979+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>net/mlx5e: Fix deadlocks between devlink and netdev instance locks</p>
<p>In the mentioned "Fixes" 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.</p>
<p>The correct lock order is described by the init flow:
probe_one -&gt; mlx5_init_one (acquires devlink lock)
-&gt; mlx5_init_one_devl_locked -&gt; mlx5_register_device
-&gt; mlx5_rescan_drivers_locked -...-&gt; mlx5e_probe -&gt; _mlx5e_probe
-&gt; register_netdev (acquires rtnl lock)
-&gt; register_netdevice (acquires netdev lock)
=&gt; devlink lock -&gt; rtnl lock -&gt; netdev lock.</p>
<p>But in the current recovery flow, the order is wrong:
mlx5e_tx_err_cqe_work (acquires netdev lock)
-&gt; mlx5e_reporter_tx_err_cqe -&gt; mlx5e_health_report
-&gt; devlink_health_report (acquires devlink lock =&gt; boom!)
-&gt; devlink_health_reporter_recover
-&gt; mlx5e_tx_reporter_recover -&gt; mlx5e_tx_reporter_recover_from_ctx
-&gt; mlx5e_tx_reporter_err_cqe_recover</p>
<p>The same pattern exists in:
mlx5e_reporter_rx_timeout
mlx5e_reporter_tx_ptpsq_unhealthy
mlx5e_reporter_tx_timeout</p>
<p>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.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-45907"/>
  </entry>
</feed>
