diff options
author | Tom Tucker <tom@opengridcomputing.com> | 2008-04-24 15:17:21 -0400 |
---|---|---|
committer | Tom Tucker <tom@opengridcomputing.com> | 2008-05-19 08:33:46 -0400 |
commit | 120693d12cde0cc735d784c951b53381efec918f (patch) | |
tree | 99e5cb62caab24de1b89ee82280de8eeae1ceb20 /net | |
parent | 9d6347acd2134373c3a4c65a4d43e4f1d59aa012 (diff) |
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/xprtrdma/svc_rdma_transport.c | 1 |
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, | |||
630 | if (xprt) { | 630 | if (xprt) { |
631 | set_bit(XPT_CLOSE, &xprt->xpt_flags); | 631 | set_bit(XPT_CLOSE, &xprt->xpt_flags); |
632 | svc_xprt_enqueue(xprt); | 632 | svc_xprt_enqueue(xprt); |
633 | svc_xprt_put(xprt); | ||
633 | } | 634 | } |
634 | break; | 635 | break; |
635 | case RDMA_CM_EVENT_DEVICE_REMOVAL: | 636 | case RDMA_CM_EVENT_DEVICE_REMOVAL: |