<?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:53:48 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-89707 — nfsd: release path refs on follow_down() error</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-89707</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;nfsd: release path refs on follow_down() error&lt;/p&gt;
&lt;p&gt;nfsd_cross_mnt() initializes a local struct path with mntget() and
dget() before calling follow_down(). On a negative return the error
arm jumps to out without releasing those references:&lt;/p&gt;
&lt;p&gt;err = follow_down(&amp;amp;path, follow_flags);
    if (err &amp;lt; 0)
            goto out;&lt;/p&gt;
&lt;p&gt;follow_down() never drops the caller&amp;#39;s entry-time refs on any error
sub-case; for example a pre-cross d_manage() failure leaves path
untouched, so the mntget()/dget() taken on entry survive the call.&lt;/p&gt;
&lt;p&gt;Every other early-exit arm in nfsd_cross_mnt() (other-namespace
return, IS_ERR(exp2), and the success tail after the swap) already
calls path_put(&amp;amp;path); the err &amp;lt; 0 arm is the lone omission. The
leak inflates mnt_count and d_count on each failed cross-mount,
blocking umount and pinning dentries against the shrinker, and is
reachable by any authenticated NFS client through nfsd_lookup_dentry
or the NFSv4 READDIR encode path.&lt;/p&gt;
&lt;p&gt;Fix by calling path_put(&amp;amp;path) before the goto out in the err &amp;lt; 0
arm so the entry-time refs are released on all follow_down() error
returns.&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;nfsd: release path refs on follow_down() error&lt;/p&gt;
&lt;p&gt;nfsd_cross_mnt() initializes a local struct path with mntget() and
dget() before calling follow_down(). On a negative return the error
arm jumps to out without releasing those references:&lt;/p&gt;
&lt;p&gt;err = follow_down(&amp;amp;path, follow_flags);
    if (err &amp;lt; 0)
            goto out;&lt;/p&gt;
&lt;p&gt;follow_down() never drops the caller&amp;#39;s entry-time refs on any error
sub-case; for example a pre-cross d_manage() failure leaves path
untouched, so the mntget()/dget() taken on entry survive the call.&lt;/p&gt;
&lt;p&gt;Every other early-exit arm in nfsd_cross_mnt() (other-namespace
return, IS_ERR(exp2), and the success tail after the swap) already
calls path_put(&amp;amp;path); the err &amp;lt; 0 arm is the lone omission. The
leak inflates mnt_count and d_count on each failed cross-mount,
blocking umount and pinning dentries against the shrinker, and is
reachable by any authenticated NFS client through nfsd_lookup_dentry
or the NFSv4 READDIR encode path.&lt;/p&gt;
&lt;p&gt;Fix by calling path_put(&amp;amp;path) before the goto out in the err &amp;lt; 0
arm so the entry-time refs are released on all follow_down() error
returns.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-89707</guid>
    </item>
  </channel>
</rss>
