Explorar el Código

nfsd: fix supported attributes for acl & labels

Oops--in 916d2d844afd I moved some constants into an array for
convenience, but here I'm accidentally writing to that array.

The effect is that if you ever encounter a filesystem lacking support
for ACLs or security labels, then all queries of supported attributes
will report that attribute as unsupported from then on.

Fixes: 916d2d844afd "nfsd: clean up supported attribute handling"
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
J. Bruce Fields hace 8 años
padre
commit
dcd2086977
Se han modificado 1 ficheros con 3 adiciones y 1 borrados
  1. 3 1
      fs/nfsd/nfs4xdr.c

+ 3 - 1
fs/nfsd/nfs4xdr.c

@@ -2440,7 +2440,9 @@ nfsd4_encode_fattr(struct xdr_stream *xdr, struct svc_fh *fhp,
 	p++;                /* to be backfilled later */
 	p++;                /* to be backfilled later */
 
 
 	if (bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) {
 	if (bmval0 & FATTR4_WORD0_SUPPORTED_ATTRS) {
-		u32 *supp = nfsd_suppattrs[minorversion];
+		u32 supp[3];
+
+		memcpy(supp, nfsd_suppattrs[minorversion], sizeof(supp));
 
 
 		if (!IS_POSIXACL(dentry->d_inode))
 		if (!IS_POSIXACL(dentry->d_inode))
 			supp[0] &= ~FATTR4_WORD0_ACL;
 			supp[0] &= ~FATTR4_WORD0_ACL;