]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
NFSv4: Don't test open_stateid unless it is set
authorTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 22 Sep 2016 17:39:16 +0000 (13:39 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 27 Sep 2016 18:35:11 +0000 (14:35 -0400)
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>
Tested-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/nfs4proc.c

index 409b9fa2b84471973a21aafdc5eba49bb2f09b6d..6f0df2c8846c3644231d65197b6e2397c97df46d 100644 (file)
@@ -2587,6 +2587,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) &&