summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@citi.umich.edu>2009-12-01 19:42:57 -0500
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-12-14 18:06:54 -0500
commit57ecb34febc4c133ca0ccc7817796605a78a01d3 (patch)
treecc0b9443c5b1c56c138b3bc0066d36afe55faaeb
parent864f0f61f829bac5f150a903aad9619322a25424 (diff)
downloadlinux-57ecb34febc4c133ca0ccc7817796605a78a01d3.tar.gz
linux-57ecb34febc4c133ca0ccc7817796605a78a01d3.tar.bz2
linux-57ecb34febc4c133ca0ccc7817796605a78a01d3.zip
nfsd4: fix share mode permissions
NFSv4 opens may function as locks denying other NFSv4 users the rights to open a file. We're requiring a user to have write permissions before they can deny write. We're *not* requiring a user to have write permissions to deny read, which is if anything a more drastic denial. What was intended was to require write permissions for DENY_READ. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r--fs/nfsd/nfs4proc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 60a93cdefef5..a468224a118f 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -171,7 +171,7 @@ do_open_permission(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfs
accmode |= NFSD_MAY_READ;
if (open->op_share_access & NFS4_SHARE_ACCESS_WRITE)
accmode |= (NFSD_MAY_WRITE | NFSD_MAY_TRUNC);
- if (open->op_share_deny & NFS4_SHARE_DENY_WRITE)
+ if (open->op_share_deny & NFS4_SHARE_DENY_READ)
accmode |= NFSD_MAY_WRITE;
status = fh_verify(rqstp, current_fh, S_IFREG, accmode);