{
        int error;
 
-       if (clp->cl_cons_state == NFS_CS_READY) {
-               /* the client is already initialised */
-               dprintk("<-- nfs_init_client() = 0 [already %p]\n", clp);
+       /* the client is already initialised */
+       if (clp->cl_cons_state == NFS_CS_READY)
                return clp;
-       }
 
        /*
         * Create a client RPC handle for doing FSSTAT with UNIX auth only
         * - RFC 2623, sec 2.3.2
         */
        error = nfs_create_rpc_client(clp, cl_init, RPC_AUTH_UNIX);
-       if (error < 0)
-               goto error;
-       nfs_mark_client_ready(clp, NFS_CS_READY);
+       nfs_mark_client_ready(clp, error == 0 ? NFS_CS_READY : error);
+       if (error < 0) {
+               nfs_put_client(clp);
+               clp = ERR_PTR(error);
+       }
        return clp;
-
-error:
-       nfs_mark_client_ready(clp, error);
-       nfs_put_client(clp);
-       dprintk("<-- nfs_init_client() = xerror %d\n", error);
-       return ERR_PTR(error);
 }
 EXPORT_SYMBOL_GPL(nfs_init_client);