<?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 07:10:16 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-53397 — nfsd: fix posix_acl leak on SETACL decode failure</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-53397</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: fix posix_acl leak on SETACL decode failure&lt;/p&gt;
&lt;p&gt;nfsaclsvc_decode_setaclargs() and nfs3svc_decode_setaclargs() each
call nfs_stream_decode_acl() twice, first for NFS_ACL and then for
NFS_DFACL.  Each successful call transfers ownership of a freshly
allocated posix_acl into argp-&amp;gt;acl_access or argp-&amp;gt;acl_default.  If
the first call succeeds but the second fails, the decoder returns
false and argp-&amp;gt;acl_access is left dangling.&lt;/p&gt;
&lt;p&gt;ACLPROC2_SETACL.pc_release was wired to nfssvc_release_attrstat and
ACLPROC3_SETACL.pc_release was wired to nfs3svc_release_fhandle.
Both only call fh_put() and have no knowledge of the ACL fields on
argp.  The posix_acl_release() pairs sat at the out: labels inside
nfsacld_proc_setacl() and nfsd3_proc_setacl(), but svc_process()
skips pc_func when pc_decode returns false, so that cleanup is
unreachable on decode failure:&lt;/p&gt;
&lt;p&gt;svc_process_common()
      pc_decode()                  /* decode_setaclargs: false */
      /* pc_func skipped */
      pc_release()                 /* fh_put only -- ACLs leaked */&lt;/p&gt;
&lt;p&gt;The orphaned posix_acl is leaked for the lifetime of the server.&lt;/p&gt;
&lt;p&gt;Fix by adding nfsaclsvc_release_setacl() and nfs3svc_release_setacl(),
which release both argp-&amp;gt;acl_access and argp-&amp;gt;acl_default in addition
to fh_put(), and wiring them as pc_release for their respective SETACL
procedures.  pc_release runs on every path svc_process() takes after
decode, including decode failure, so…&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: fix posix_acl leak on SETACL decode failure&lt;/p&gt;
&lt;p&gt;nfsaclsvc_decode_setaclargs() and nfs3svc_decode_setaclargs() each
call nfs_stream_decode_acl() twice, first for NFS_ACL and then for
NFS_DFACL.  Each successful call transfers ownership of a freshly
allocated posix_acl into argp-&amp;gt;acl_access or argp-&amp;gt;acl_default.  If
the first call succeeds but the second fails, the decoder returns
false and argp-&amp;gt;acl_access is left dangling.&lt;/p&gt;
&lt;p&gt;ACLPROC2_SETACL.pc_release was wired to nfssvc_release_attrstat and
ACLPROC3_SETACL.pc_release was wired to nfs3svc_release_fhandle.
Both only call fh_put() and have no knowledge of the ACL fields on
argp.  The posix_acl_release() pairs sat at the out: labels inside
nfsacld_proc_setacl() and nfsd3_proc_setacl(), but svc_process()
skips pc_func when pc_decode returns false, so that cleanup is
unreachable on decode failure:&lt;/p&gt;
&lt;p&gt;svc_process_common()
      pc_decode()                  /* decode_setaclargs: false */
      /* pc_func skipped */
      pc_release()                 /* fh_put only -- ACLs leaked */&lt;/p&gt;
&lt;p&gt;The orphaned posix_acl is leaked for the lifetime of the server.&lt;/p&gt;
&lt;p&gt;Fix by adding nfsaclsvc_release_setacl() and nfs3svc_release_setacl(),
which release both argp-&amp;gt;acl_access and argp-&amp;gt;acl_default in addition
to fh_put(), and wiring them as pc_release for their respective SETACL
procedures.  pc_release runs on every path svc_process() takes after
decode, including decode failure, so…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-53397</guid>
    </item>
  </channel>
</rss>
