From ffa93c9b603d9bad60498438a31516a938f3dcd6 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sat, 19 Apr 2008 13:15:47 -0400 Subject: [PATCH] --- yaml --- r: 92905 b: refs/heads/master c: 24b74bf0c9e08cbda74d3c64af69ad402ed54e04 h: refs/heads/master i: 92903: 8231efba652c12f4ab87246a9e6c5b0a763660f4 v: v3 --- [refs] | 2 +- trunk/net/sunrpc/clnt.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) 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); + } } /*