From: Vladimir Sokolovsky Date: Sat, 8 Dec 2007 04:32:03 +0000 (-0800) Subject: RDMA/cma: Reenable device removal on passive side X-Git-Tag: v2.6.25-rc1~1234^2~52 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=45d9478da106c749203056f56e94d0e370dfac87;p=~emulex%2Finfiniband.git RDMA/cma: Reenable device removal on passive side Enable conn_id remove on the passive side after connection establishment. This corrects an issue where the IB driver can't be unloaded after running applications over RDS. The 'dev_remove' counter does not reach 0 for established connections on the passive side. This problem is limited to device removal, and only occurs on the passive side if there are established connections. Signed-off-by: Vladimir Sokolovsky Reviewed-by: Sean Hefty Signed-off-by: Roland Dreier --- diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 5a80e74731c..312ec74f3d1 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -1122,8 +1122,10 @@ static int cma_req_handler(struct ib_cm_id *cm_id, struct ib_cm_event *ib_event) cm_id->cm_handler = cma_ib_handler; ret = conn_id->id.event_handler(&conn_id->id, &event); - if (!ret) + if (!ret) { + cma_enable_remove(conn_id); goto out; + } /* Destroy the CM ID by returning a non-zero value. */ conn_id->cm_id.ib = NULL;