NFSv4: Clear the NFS_CAP_FS_LOCATIONS flag if it is not set
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 29 Aug 2025 16:07:22 +0000 (09:07 -0700)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Fri, 29 Aug 2025 16:56:43 +0000 (12:56 -0400)
_nfs4_server_capabilities() is expected to clear any flags that are not
supported by the server.

Fixes: 8a59bb93b7e3 ("NFSv4 store server support for fs_location attribute")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/nfs4proc.c

index 5b92fcf45dd7d9f4a92d05313bfbadedb382f02d..d0f91d9430f6d04651a81a79e029d558c14d389e 100644 (file)
@@ -4013,8 +4013,9 @@ static int _nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *f
                                     res.attr_bitmask[2];
                }
                memcpy(server->attr_bitmask, res.attr_bitmask, sizeof(server->attr_bitmask));
-               server->caps &= ~(NFS_CAP_ACLS | NFS_CAP_HARDLINKS |
-                                 NFS_CAP_SYMLINKS| NFS_CAP_SECURITY_LABEL);
+               server->caps &=
+                       ~(NFS_CAP_ACLS | NFS_CAP_HARDLINKS | NFS_CAP_SYMLINKS |
+                         NFS_CAP_SECURITY_LABEL | NFS_CAP_FS_LOCATIONS);
                server->fattr_valid = NFS_ATTR_FATTR_V4;
                if (res.attr_bitmask[0] & FATTR4_WORD0_ACL &&
                                res.acl_bitmask & ACL4_SUPPORT_ALLOW_ACL)