<?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 01:50:30 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-74523 — qede: sync udp_tunnel ports outside qede_lock in the recovery path</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-74523</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;qede: sync udp_tunnel ports outside qede_lock in the recovery path&lt;/p&gt;
&lt;p&gt;A TX timeout on a qede NIC that has VXLAN/GENEVE tunnel ports
configured wedges the rtnetlink control plane of the whole machine:&lt;/p&gt;
&lt;p&gt;NETDEV WATCHDOG: ens6f1 (qede): transmit queue 2 timed out 10226 ms
  [qede_tx_timeout:586(ens6f1)]TX timeout on queue 2!
  [qede_recovery_handler:2665(ens6f0)]Starting a recovery process&lt;/p&gt;
&lt;p&gt;The recovery path deadlocks on the driver&amp;#39;s own mutex:&lt;/p&gt;
&lt;p&gt;qede_sp_task
   rtnl_lock()
   mutex_lock(&amp;amp;edev-&amp;gt;qede_lock)        &amp;lt;- taken
   qede_recovery_handler
    qede_load
    udp_tunnel_nic_reset_ntf
     __udp_tunnel_nic_device_sync
      info-&amp;gt;sync_table == qede_udp_tunnel_sync
       mutex_lock(&amp;amp;edev-&amp;gt;qede_lock)    &amp;lt;- same task: deadlock&lt;/p&gt;
&lt;p&gt;The mutex is not recursive, so the kworker blocks on itself with
rtnl_lock held, and neither lock is ever released. Every task that
calls rtnl_lock() afterwards (ip, ovs-vswitchd, lldpad, IPv6
addrconf, sshd) blocks forever while the node still answers ping.
In a vmcore from an affected production node rtnl_mutex.owner
decodes to the very kworker blocked at the innermost mutex_lock()
above.&lt;/p&gt;
&lt;p&gt;Re-sync the tunnel ports from qede_sp_task() after the internal lock
is dropped, still under rtnl_lock as the udp_tunnel API requires.
This mirrors qede_open(), which calls udp_tunnel_nic_reset_ntf()
under rtnl without the internal lock.&lt;/p&gt;
&lt;p&gt;qede_recovery_handler() now returns whether it has successfu…&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;qede: sync udp_tunnel ports outside qede_lock in the recovery path&lt;/p&gt;
&lt;p&gt;A TX timeout on a qede NIC that has VXLAN/GENEVE tunnel ports
configured wedges the rtnetlink control plane of the whole machine:&lt;/p&gt;
&lt;p&gt;NETDEV WATCHDOG: ens6f1 (qede): transmit queue 2 timed out 10226 ms
  [qede_tx_timeout:586(ens6f1)]TX timeout on queue 2!
  [qede_recovery_handler:2665(ens6f0)]Starting a recovery process&lt;/p&gt;
&lt;p&gt;The recovery path deadlocks on the driver&amp;#39;s own mutex:&lt;/p&gt;
&lt;p&gt;qede_sp_task
   rtnl_lock()
   mutex_lock(&amp;amp;edev-&amp;gt;qede_lock)        &amp;lt;- taken
   qede_recovery_handler
    qede_load
    udp_tunnel_nic_reset_ntf
     __udp_tunnel_nic_device_sync
      info-&amp;gt;sync_table == qede_udp_tunnel_sync
       mutex_lock(&amp;amp;edev-&amp;gt;qede_lock)    &amp;lt;- same task: deadlock&lt;/p&gt;
&lt;p&gt;The mutex is not recursive, so the kworker blocks on itself with
rtnl_lock held, and neither lock is ever released. Every task that
calls rtnl_lock() afterwards (ip, ovs-vswitchd, lldpad, IPv6
addrconf, sshd) blocks forever while the node still answers ping.
In a vmcore from an affected production node rtnl_mutex.owner
decodes to the very kworker blocked at the innermost mutex_lock()
above.&lt;/p&gt;
&lt;p&gt;Re-sync the tunnel ports from qede_sp_task() after the internal lock
is dropped, still under rtnl_lock as the udp_tunnel API requires.
This mirrors qede_open(), which calls udp_tunnel_nic_reset_ntf()
under rtnl without the internal lock.&lt;/p&gt;
&lt;p&gt;qede_recovery_handler() now returns whether it has successfu…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-74523</guid>
    </item>
  </channel>
</rss>
