aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/auth.c3
-rw-r--r--fs/nfsd/vfs.c13
2 files changed, 5 insertions, 11 deletions
diff --git a/fs/nfsd/auth.c b/fs/nfsd/auth.c
index cf61dc8ae942..21928056e35e 100644
--- a/fs/nfsd/auth.c
+++ b/fs/nfsd/auth.c
@@ -9,10 +9,11 @@
9#include <linux/sunrpc/svc.h> 9#include <linux/sunrpc/svc.h>
10#include <linux/sunrpc/svcauth.h> 10#include <linux/sunrpc/svcauth.h>
11#include <linux/nfsd/nfsd.h> 11#include <linux/nfsd/nfsd.h>
12#include <linux/nfsd/export.h>
12 13
13#define CAP_NFSD_MASK (CAP_FS_MASK|CAP_TO_MASK(CAP_SYS_RESOURCE)) 14#define CAP_NFSD_MASK (CAP_FS_MASK|CAP_TO_MASK(CAP_SYS_RESOURCE))
14 15
15static int nfsexp_flags(struct svc_rqst *rqstp, struct svc_export *exp) 16int nfsexp_flags(struct svc_rqst *rqstp, struct svc_export *exp)
16{ 17{
17 struct exp_flavor_info *f; 18 struct exp_flavor_info *f;
18 struct exp_flavor_info *end = exp->ex_flavors + exp->ex_nflavors; 19 struct exp_flavor_info *end = exp->ex_flavors + exp->ex_nflavors;
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index f2684e57cf22..ee96a897a29e 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -1797,16 +1797,9 @@ nfsd_statfs(struct svc_rqst *rqstp, struct svc_fh *fhp, struct kstatfs *stat)
1797 return err; 1797 return err;
1798} 1798}
1799 1799
1800static inline int EX_RDONLY(struct svc_export *exp, struct svc_rqst *rqstp) 1800static int exp_rdonly(struct svc_rqst *rqstp, struct svc_export *exp)
1801{ 1801{
1802 struct exp_flavor_info *f; 1802 return nfsexp_flags(rqstp, exp) & NFSEXP_READONLY;
1803 struct exp_flavor_info *end = exp->ex_flavors + exp->ex_nflavors;
1804
1805 for (f = exp->ex_flavors; f < end; f++) {
1806 if (f->pseudoflavor == rqstp->rq_flavor)
1807 return f->flags & NFSEXP_READONLY;
1808 }
1809 return exp->ex_flags & NFSEXP_READONLY;
1810} 1803}
1811 1804
1812/* 1805/*
@@ -1845,7 +1838,7 @@ nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
1845 */ 1838 */
1846 if (!(acc & MAY_LOCAL_ACCESS)) 1839 if (!(acc & MAY_LOCAL_ACCESS))
1847 if (acc & (MAY_WRITE | MAY_SATTR | MAY_TRUNC)) { 1840 if (acc & (MAY_WRITE | MAY_SATTR | MAY_TRUNC)) {
1848 if (EX_RDONLY(exp, rqstp) || IS_RDONLY(inode)) 1841 if (exp_rdonly(rqstp, exp) || IS_RDONLY(inode))
1849 return nfserr_rofs; 1842 return nfserr_rofs;
1850 if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode)) 1843 if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode))
1851 return nfserr_perm; 1844 return nfserr_perm;