Browse Source

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>
Tom Tucker 17 years ago
parent
commit
120693d12c
1 changed files with 1 additions and 0 deletions
  1. 1 0
      net/sunrpc/xprtrdma/svc_rdma_transport.c

+ 1 - 0
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: