NFSv4.1: Fix an Oops in nfs41_walk_client_list
authorTrond Myklebust <[email protected]>
Wed, 21 Jan 2015 19:37:44 +0000 (14:37 -0500)
committerTrond Myklebust <[email protected]>
Wed, 21 Jan 2015 22:10:09 +0000 (17:10 -0500)
If we start state recovery on a client that failed to initialise correctly,
then we are very likely to Oops.

Reported-by: "Mkrtchyan, Tigran" <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Cc: [email protected]
Signed-off-by: Trond Myklebust <[email protected]>
fs/nfs/nfs4client.c

index 953daa44a28232d6863da375e59d44a0b42f49b6..706ad10b8186d4401eb4da48ebf0e7fba7686481 100644 (file)
@@ -639,7 +639,7 @@ int nfs41_walk_client_list(struct nfs_client *new,
                        prev = pos;
 
                        status = nfs_wait_client_init_complete(pos);
-                       if (status == 0) {
+                       if (pos->cl_cons_state == NFS_CS_SESSION_INITING) {
                                nfs4_schedule_lease_recovery(pos);
                                status = nfs4_wait_clnt_recover(pos);
                        }