summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tucker <tom@opengridcomputing.com>2008-04-24 14:17:21 -0500
committerTom Tucker <tom@opengridcomputing.com>2008-05-19 07:33:46 -0500
commit120693d12cde0cc735d784c951b53381efec918f (patch)
tree99e5cb62caab24de1b89ee82280de8eeae1ceb20
parent9d6347acd2134373c3a4c65a4d43e4f1d59aa012 (diff)
downloadlwn-120693d12cde0cc735d784c951b53381efec918f.tar.gz
lwn-120693d12cde0cc735d784c951b53381efec918f.zip
svcrdma: Add put of connection ESTABLISHED reference in rdma_cma_handler
The svcrdma transport takes a reference when it gets the ESTABLISHED event from the provider. This reference is supposed to be removed when the DISCONNECT event is received, however, the call to svc_xprt_put was missing in the switch statement. This results in the memory associated with the transport never being freed. Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_transport.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index 17f036b23a96..4bf8b5ad1675 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -630,6 +630,7 @@ static int rdma_cma_handler(struct rdma_cm_id *cma_id,
if (xprt) {
set_bit(XPT_CLOSE, &xprt->xpt_flags);
svc_xprt_enqueue(xprt);
+ svc_xprt_put(xprt);
}
break;
case RDMA_CM_EVENT_DEVICE_REMOVAL: