diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-09-22 19:39:17 +0200 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2016-09-27 20:35:15 +0200 |
commit | 67dd483026c64444d7fd8eab83334621b3c47b76 (patch) | |
tree | 9590251e1a0bd632ee26fc2711799dd6b024004e /fs | |
parent | NFSv4: Don't test open_stateid unless it is set (diff) | |
download | linux-67dd483026c64444d7fd8eab83334621b3c47b76.tar.xz linux-67dd483026c64444d7fd8eab83334621b3c47b76.zip |
NFSv4: Mark the lock and open stateids as invalid after freeing them
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 6f0df2c8846c..fdd7faceaf22 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2560,6 +2560,7 @@ static int nfs41_check_expired_locks(struct nfs4_state *state) if (status == -NFS4ERR_EXPIRED || status == -NFS4ERR_BAD_STATEID) { clear_bit(NFS_LOCK_INITIALIZED, &lsp->ls_flags); + lsp->ls_stateid.type = NFS4_INVALID_STATEID_TYPE; if (!recover_lost_locks) set_bit(NFS_LOCK_LOST, &lsp->ls_flags); } else if (status != NFS_OK) { @@ -2605,6 +2606,7 @@ static int nfs41_check_open_stateid(struct nfs4_state *state) clear_bit(NFS_O_WRONLY_STATE, &state->flags); clear_bit(NFS_O_RDWR_STATE, &state->flags); clear_bit(NFS_OPEN_STATE, &state->flags); + stateid->type = NFS4_INVALID_STATEID_TYPE; } return status; } |