]> git.karo-electronics.de Git - linux-beck.git/commitdiff
nfsd: distinguish functions of NFSD_MAY_* flags
authorJ. Bruce Fields <bfields@redhat.com>
Sun, 10 Apr 2011 14:35:12 +0000 (10:35 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 11 Apr 2011 12:42:03 +0000 (08:42 -0400)
Most of the NFSD_MAY_* flags actually request permissions, but over the
years we've accreted a few that modify the behavior of the permission or
open code in other ways.

Distinguish the two cases a little more.  In particular, allow the
shortcut at the start of nfsd_permission to ignore the
non-permission-requesting bits.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/vfs.c
fs/nfsd/vfs.h

index 2e1cebde90df4c69baa21635e959f9d81c9809f1..a76ef7e0b3d0592838da8593c1f24c86fa8f1ae5 100644 (file)
@@ -2027,7 +2027,7 @@ nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
        struct inode    *inode = dentry->d_inode;
        int             err;
 
-       if (acc == NFSD_MAY_NOP)
+       if ((acc & NFSD_MAY_MASK) == NFSD_MAY_NOP)
                return 0;
 #if 0
        dprintk("nfsd: permission 0x%x%s%s%s%s%s%s%s mode 0%o%s%s%s\n",
index 9a370a5e36b7ea9409b0b5b250ff88b6d5bee6ce..1036913e6e86c69f7df741e7327aa9e32ffa94f2 100644 (file)
@@ -17,6 +17,9 @@
 #define NFSD_MAY_SATTR         8
 #define NFSD_MAY_TRUNC         16
 #define NFSD_MAY_LOCK          32
+#define NFSD_MAY_MASK          63
+
+/* extra hints to permission and open routines: */
 #define NFSD_MAY_OWNER_OVERRIDE        64
 #define NFSD_MAY_LOCAL_ACCESS  128 /* IRIX doing local access check on device special file*/
 #define NFSD_MAY_BYPASS_GSS_ON_ROOT 256