<?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>Fri, 02 Oct 2026 04:22:55 +0000</lastBuildDate>
    <item>
      <title>CVE-2025-38311 — iavf: get rid of the crit lock</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2025-38311</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;iavf: get rid of the crit lock&lt;/p&gt;
&lt;p&gt;Get rid of the crit lock.
That frees us from the error prone logic of try_locks.&lt;/p&gt;
&lt;p&gt;Thanks to netdev_lock() by Jakub it is now easy, and in most cases we were
protected by it already - replace crit lock by netdev lock when it was not
the case.&lt;/p&gt;
&lt;p&gt;Lockdep reports that we should cancel the work under crit_lock [splat1],
and that was the scheme we have mostly followed since [1] by Slawomir.
But when that is done we still got into deadlocks [splat2]. So instead
we should look at the bigger problem, namely &amp;#34;weird locking/scheduling&amp;#34;
of the iavf. The first step to fix that is to remove the crit lock.
I will followup with a -next series that simplifies scheduling/tasks.&lt;/p&gt;
&lt;p&gt;Cancel the work without netdev lock (weird unlock+lock scheme),
to fix the [splat2] (which would be totally ugly if we would kept
the crit lock).&lt;/p&gt;
&lt;p&gt;Extend protected part of iavf_watchdog_task() to include scheduling
more work.&lt;/p&gt;
&lt;p&gt;Note that the removed comment in iavf_reset_task() was misplaced,
it belonged to inside of the removed if condition, so it&amp;#39;s gone now.&lt;/p&gt;
&lt;p&gt;[splat1] - w/o this patch - The deadlock during VF removal:
     WARNING: possible circular locking dependency detected
     sh/3825 is trying to acquire lock:
      ((work_completion)(&amp;amp;(&amp;amp;adapter-&amp;gt;watchdog_task)-&amp;gt;work)){+.+.}-{0:0}, at: start_flush_work+0x1a1/0x470
          but task is already holding lock:
      (&amp;amp;adapter-&amp;gt;crit_lock){+.+.}-{4:4}, at: iavf_remove…&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;iavf: get rid of the crit lock&lt;/p&gt;
&lt;p&gt;Get rid of the crit lock.
That frees us from the error prone logic of try_locks.&lt;/p&gt;
&lt;p&gt;Thanks to netdev_lock() by Jakub it is now easy, and in most cases we were
protected by it already - replace crit lock by netdev lock when it was not
the case.&lt;/p&gt;
&lt;p&gt;Lockdep reports that we should cancel the work under crit_lock [splat1],
and that was the scheme we have mostly followed since [1] by Slawomir.
But when that is done we still got into deadlocks [splat2]. So instead
we should look at the bigger problem, namely &amp;#34;weird locking/scheduling&amp;#34;
of the iavf. The first step to fix that is to remove the crit lock.
I will followup with a -next series that simplifies scheduling/tasks.&lt;/p&gt;
&lt;p&gt;Cancel the work without netdev lock (weird unlock+lock scheme),
to fix the [splat2] (which would be totally ugly if we would kept
the crit lock).&lt;/p&gt;
&lt;p&gt;Extend protected part of iavf_watchdog_task() to include scheduling
more work.&lt;/p&gt;
&lt;p&gt;Note that the removed comment in iavf_reset_task() was misplaced,
it belonged to inside of the removed if condition, so it&amp;#39;s gone now.&lt;/p&gt;
&lt;p&gt;[splat1] - w/o this patch - The deadlock during VF removal:
     WARNING: possible circular locking dependency detected
     sh/3825 is trying to acquire lock:
      ((work_completion)(&amp;amp;(&amp;amp;adapter-&amp;gt;watchdog_task)-&amp;gt;work)){+.+.}-{0:0}, at: start_flush_work+0x1a1/0x470
          but task is already holding lock:
      (&amp;amp;adapter-&amp;gt;crit_lock){+.+.}-{4:4}, at: iavf_remove…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2025-38311</guid>
    </item>
  </channel>
</rss>
