diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2018-03-20 21:43:13 +0100 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2018-04-10 22:06:22 +0200 |
commit | f50862423f547f8506d69b6e4fc53be53288244c (patch) | |
tree | 9ea17ff2a8283aa5b71d5672e5ac430bee036beb /fs | |
parent | xprtrdma: Fix corner cases when handling device removal (diff) | |
download | linux-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.c | 1 |
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) { |