Browse Source

SUNRPC: Ensure that call_bind times out correctly

If the rpcbind server is unavailable, we still want the RPC client
to respect the timeout.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Trond Myklebust 11 years ago
parent
commit
fdb63dcdb5
1 changed files with 2 additions and 3 deletions
  1. 2 3
      net/sunrpc/clnt.c

+ 2 - 3
net/sunrpc/clnt.c

@@ -1728,9 +1728,7 @@ call_bind_status(struct rpc_task *task)
 	case -EPROTONOSUPPORT:
 	case -EPROTONOSUPPORT:
 		dprintk("RPC: %5u remote rpcbind version unavailable, retrying\n",
 		dprintk("RPC: %5u remote rpcbind version unavailable, retrying\n",
 				task->tk_pid);
 				task->tk_pid);
-		task->tk_status = 0;
-		task->tk_action = call_bind;
-		return;
+		goto retry_timeout;
 	case -ECONNREFUSED:		/* connection problems */
 	case -ECONNREFUSED:		/* connection problems */
 	case -ECONNRESET:
 	case -ECONNRESET:
 	case -ECONNABORTED:
 	case -ECONNABORTED:
@@ -1756,6 +1754,7 @@ call_bind_status(struct rpc_task *task)
 	return;
 	return;
 
 
 retry_timeout:
 retry_timeout:
+	task->tk_status = 0;
 	task->tk_action = call_timeout;
 	task->tk_action = call_timeout;
 }
 }