]> git.karo-electronics.de Git - linux-beck.git/commitdiff
nfsd: Add macro NFS_ACL_MASK for ACL
authorKinglong Mee <kinglongmee@gmail.com>
Fri, 3 Jul 2015 11:39:02 +0000 (19:39 +0800)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 20 Jul 2015 18:58:46 +0000 (14:58 -0400)
Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs2acl.c
fs/nfsd/nfs3acl.c
include/uapi/linux/nfsacl.h

index d54701f6dc7873440b2c11d375b96323484ba259..1580ea6fd64df15da96b832eeef9f3dc2560e32b 100644 (file)
@@ -44,13 +44,13 @@ static __be32 nfsacld_proc_getacl(struct svc_rqst * rqstp,
 
        inode = d_inode(fh->fh_dentry);
 
-       if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
+       if (argp->mask & ~NFS_ACL_MASK)
                RETURN_STATUS(nfserr_inval);
        resp->mask = argp->mask;
 
        nfserr = fh_getattr(fh, &resp->stat);
        if (nfserr)
-               goto fail;
+               RETURN_STATUS(nfserr);
 
        if (resp->mask & (NFS_ACL|NFS_ACLCNT)) {
                acl = get_acl(inode, ACL_TYPE_ACCESS);
@@ -202,7 +202,7 @@ static int nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p,
        if (!p)
                return 0;
        argp->mask = ntohl(*p++);
-       if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT) ||
+       if (argp->mask & ~NFS_ACL_MASK ||
            !xdr_argsize_check(rqstp, p))
                return 0;
 
@@ -293,9 +293,7 @@ static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p,
                                  resp->acl_default,
                                  resp->mask & NFS_DFACL,
                                  NFS_ACL_DEFAULT);
-       if (n <= 0)
-               return 0;
-       return 1;
+       return (n > 0);
 }
 
 static int nfsaclsvc_encode_attrstatres(struct svc_rqst *rqstp, __be32 *p,
index 882b1a14bc3e85961fbd628009c7618b13263a88..01df4cd7c753fe12cee4c6d37a5ba9400b6f8f41 100644 (file)
@@ -41,7 +41,7 @@ static __be32 nfsd3_proc_getacl(struct svc_rqst * rqstp,
 
        inode = d_inode(fh->fh_dentry);
 
-       if (argp->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT))
+       if (argp->mask & ~NFS_ACL_MASK)
                RETURN_STATUS(nfserr_inval);
        resp->mask = argp->mask;
 
@@ -148,7 +148,7 @@ static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p,
        if (!p)
                return 0;
        args->mask = ntohl(*p++);
-       if (args->mask & ~(NFS_ACL|NFS_ACLCNT|NFS_DFACL|NFS_DFACLCNT) ||
+       if (args->mask & ~NFS_ACL_MASK ||
            !xdr_argsize_check(rqstp, p))
                return 0;
 
index 9bb9771a107f22eb66c3045acc573420e32ba0e5..5527266311624df58f08ae8fec7d531972db2405 100644 (file)
@@ -22,6 +22,7 @@
 #define NFS_ACLCNT             0x0002
 #define NFS_DFACL              0x0004
 #define NFS_DFACLCNT           0x0008
+#define NFS_ACL_MASK           0x000f
 
 /* Flag for Default ACL entries */
 #define NFS_ACL_DEFAULT                0x1000