diff --git a/[refs] b/[refs] index 6fcb14529bd0..d52da95260f5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0490a54a00c14212f22c5948c8c13a4553d745bd +refs/heads/master: 24b74bf0c9e08cbda74d3c64af69ad402ed54e04 diff --git a/trunk/net/sunrpc/clnt.c b/trunk/net/sunrpc/clnt.c index ea14314331b0..522b06849f86 100644 --- a/trunk/net/sunrpc/clnt.c +++ b/trunk/net/sunrpc/clnt.c @@ -1240,10 +1240,13 @@ call_decode(struct rpc_task *task) task->tk_status); return; out_retry: - req->rq_received = req->rq_private_buf.len = 0; task->tk_status = 0; - if (task->tk_client->cl_discrtry) - xprt_force_disconnect(task->tk_xprt); + /* Note: call_verify() may have freed the RPC slot */ + if (task->tk_rqstp == req) { + req->rq_received = req->rq_private_buf.len = 0; + if (task->tk_client->cl_discrtry) + xprt_force_disconnect(task->tk_xprt); + } } /*