]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFSD: Do not allow NFSv4 (N)VERIFY to check POSIX ACL attributes
authorRick Macklem <rmacklem@uoguelph.ca>
Fri, 9 Jan 2026 16:21:37 +0000 (11:21 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Thu, 29 Jan 2026 14:48:33 +0000 (09:48 -0500)
Section 9.3 of draft-ietf-nfsv4-posix-acls-00 prohibits use of
the POSIX ACL attributes with VERIFY and NVERIFY operations: the
server MUST reply NFS4ERR_INVAL when a client attempts this.

Beyond the protocol requirement, comparison of POSIX draft ACLs
via (N)VERIFY presents an implementation challenge. Clients are
not required to order the ACEs within a POSIX ACL in any
particular way, making reliable attribute comparison impractical.

Return nfserr_inval when the client requests FATTR4_POSIX_ACCESS_ACL
or FATTR4_POSIX_DEFAULT_ACL in a VERIFY or NVERIFY operation.

Signed-off-by: Rick Macklem <rmacklem@uoguelph.ca>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4proc.c

index e7ec87b6c33193cbd4cd97cc049b6b2fbc8173c6..a77ec0685eeec9ab84cd8a7bf0d07aa454dc957f 100644 (file)
@@ -2380,6 +2380,11 @@ _nfsd4_verify(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
        if (verify->ve_attrlen & 3)
                return nfserr_inval;
 
+       /* The POSIX draft ACLs cannot be tested via (N)VERIFY. */
+       if (verify->ve_bmval[2] & (FATTR4_WORD2_POSIX_DEFAULT_ACL |
+                                       FATTR4_WORD2_POSIX_ACCESS_ACL))
+               return nfserr_inval;
+
        /* count in words:
         *   bitmap_len(1) + bitmap(2) + attr_len(1) = 4
         */