summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2018-03-20 21:43:13 +0100
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2018-04-10 22:06:22 +0200
commitf50862423f547f8506d69b6e4fc53be53288244c (patch)
tree9ea17ff2a8283aa5b71d5672e5ac430bee036beb /fs
parentxprtrdma: Fix corner cases when handling device removal (diff)
downloadlinux-f50862423f547f8506d69b6e4fc53be53288244c.tar.xz
linux-f50862423f547f8506d69b6e4fc53be53288244c.zip
NFSv4: Fix nfs4_return_incompatible_delegation
The 'fmode' argument can take an FMODE_EXEC value, which we want to filter out before comparing to the delegation type. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/nfs4proc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index ec68edce6cc3..71f2916f93ff 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -1669,6 +1669,7 @@ static void nfs4_return_incompatible_delegation(struct inode *inode, fmode_t fmo
{
struct nfs_delegation *delegation;
+ fmode &= FMODE_READ|FMODE_WRITE;
rcu_read_lock();
delegation = rcu_dereference(NFS_I(inode)->delegation);
if (delegation == NULL || (delegation->type & fmode) == fmode) {