summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust2016-09-22 19:39:18 +0200
committerAnna Schumaker2016-09-27 20:35:19 +0200
commit304020fe48c6c7fff8b5a38f382b54404f0f79d3 (patch)
tree87ad1ebb4d2d3cf127769e343baf0b48eae474e5
parentNFSv4: Mark the lock and open stateids as invalid after freeing them (diff)
downloadkernel-qcow2-linux-304020fe48c6c7fff8b5a38f382b54404f0f79d3.tar.gz
kernel-qcow2-linux-304020fe48c6c7fff8b5a38f382b54404f0f79d3.tar.xz
kernel-qcow2-linux-304020fe48c6c7fff8b5a38f382b54404f0f79d3.zip
NFSv4: Open state recovery must account for file permission changes
If the file permissions change on the server, then we may not be able to recover open state. If so, we need to ensure that we mark the file descriptor appropriately. Cc: stable@vger.kernel.org Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Tested-by: Oleg Drokin <green@linuxhacker.ru> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-rw-r--r--fs/nfs/nfs4state.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 4b538bb194f8..0a25f70a3b0b 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1532,6 +1532,9 @@ restart:
__func__, status);
case -ENOENT:
case -ENOMEM:
+ case -EACCES:
+ case -EROFS:
+ case -EIO:
case -ESTALE:
/* Open state on this file cannot be recovered */
nfs4_state_mark_recovery_failed(state, status);