diff options
Diffstat (limited to 'net/sunrpc/xprt.c')
-rw-r--r-- | net/sunrpc/xprt.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index 1ba55dc38b7a..6dda3860351f 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c | |||
@@ -839,6 +839,7 @@ static void xprt_request_init(struct rpc_task *task, struct rpc_xprt *xprt) | |||
839 | req->rq_task = task; | 839 | req->rq_task = task; |
840 | req->rq_xprt = xprt; | 840 | req->rq_xprt = xprt; |
841 | req->rq_xid = xprt_alloc_xid(xprt); | 841 | req->rq_xid = xprt_alloc_xid(xprt); |
842 | req->rq_release_snd_buf = NULL; | ||
842 | dprintk("RPC: %4d reserved req %p xid %08x\n", task->tk_pid, | 843 | dprintk("RPC: %4d reserved req %p xid %08x\n", task->tk_pid, |
843 | req, ntohl(req->rq_xid)); | 844 | req, ntohl(req->rq_xid)); |
844 | } | 845 | } |
@@ -867,6 +868,8 @@ void xprt_release(struct rpc_task *task) | |||
867 | xprt->last_used + xprt->idle_timeout); | 868 | xprt->last_used + xprt->idle_timeout); |
868 | spin_unlock_bh(&xprt->transport_lock); | 869 | spin_unlock_bh(&xprt->transport_lock); |
869 | task->tk_rqstp = NULL; | 870 | task->tk_rqstp = NULL; |
871 | if (req->rq_release_snd_buf) | ||
872 | req->rq_release_snd_buf(req); | ||
870 | memset(req, 0, sizeof(*req)); /* mark unused */ | 873 | memset(req, 0, sizeof(*req)); /* mark unused */ |
871 | 874 | ||
872 | dprintk("RPC: %4d release request %p\n", task->tk_pid, req); | 875 | dprintk("RPC: %4d release request %p\n", task->tk_pid, req); |