Message ID | 1474089213-104014-25-git-send-email-trond.myklebust@primarydata.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 08c6e46c5b95..e4f2008cde7d 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2583,6 +2583,11 @@ static int nfs41_check_open_stateid(struct nfs4_state *state) struct rpc_cred *cred = state->owner->so_cred; int status; + if (test_bit(NFS_OPEN_STATE, &state->flags) == 0) { + if (test_bit(NFS_DELEGATED_STATE, &state->flags) == 0) + return NFS_OK; + return -NFS4ERR_BAD_STATEID; + } /* If a state reset has been done, test_stateid is unneeded */ if ((test_bit(NFS_O_RDONLY_STATE, &state->flags) == 0) && (test_bit(NFS_O_WRONLY_STATE, &state->flags) == 0) &&
We need to test the NFS_OPEN_STATE flag for whether or not the open_stateid is valid. Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> --- fs/nfs/nfs4proc.c | 5 +++++ 1 file changed, 5 insertions(+)