summaryrefslogtreecommitdiffstats
path: root/net/sunrpc/xprtrdma
diff options
context:
space:
mode:
authorTom Tucker <tom@opengridcomputing.com>2008-04-25 21:11:31 +0200
committerTom Tucker <tom@opengridcomputing.com>2008-05-19 14:33:47 +0200
commit05a0826a6e6d95ab6e9c3e4a10b58e10f233cc2b (patch)
tree85355af360f6da6410bee37ba662c59b58e928d4 /net/sunrpc/xprtrdma
parentsvcrdma: Add put of connection ESTABLISHED reference in rdma_cma_handler (diff)
downloadlinux-05a0826a6e6d95ab6e9c3e4a10b58e10f233cc2b.tar.xz
linux-05a0826a6e6d95ab6e9c3e4a10b58e10f233cc2b.zip
svcrdma: Free context on ib_post_recv error
If there is an error posting the recv WR to the RQ, free the context associated with the WR. This would leak a context when asynchronous errors occurred on the transport while conccurent threads were processing their RPC. Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
Diffstat (limited to 'net/sunrpc/xprtrdma')
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_transport.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index 4bf8b5ad1675..e85ac77f4954 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -524,6 +524,8 @@ int svc_rdma_post_recv(struct svcxprt_rdma *xprt)
recv_wr.wr_id = (u64)(unsigned long)ctxt;
ret = ib_post_recv(xprt->sc_qp, &recv_wr, &bad_recv_wr);
+ if (ret)
+ svc_rdma_put_context(ctxt, 1);
return ret;
}