From: Bang Nguyen Date: Mon, 17 Jun 2013 20:32:18 +0000 (-0700) Subject: RDS: check for valid rdma id before initiating connection X-Git-Tag: v4.1.12-92~293^2^2~60 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=8daba63c746d3d540fe54c3d0477277a143f9851;p=users%2Fjedix%2Flinux-maple.git RDS: check for valid rdma id before initiating connection Connection could have been dropped while the route is being resolved so check for valid rdma id before initiating the connection. Orabug: 16857341 Signed-off-by: zheng.li (cherry picked from commit 5528367d56539f817182faa1f0ea35779ccac14e) --- diff --git a/net/rds/rdma_transport.c b/net/rds/rdma_transport.c index e756376ea709..f7f87bb83b16 100644 --- a/net/rds/rdma_transport.c +++ b/net/rds/rdma_transport.c @@ -121,7 +121,18 @@ int rds_rdma_cm_event_handler(struct rdma_cm_id *cm_id, case RDMA_CM_EVENT_ROUTE_RESOLVED: /* XXX worry about racing with listen acceptance */ conn->c_to_index = 0; - ret = trans->cm_initiate_connect(cm_id); + + /* Connection could have been dropped so make sure the + * cm_id is valid before proceeding */ + if (conn) { + struct rds_ib_connection *ibic; + + ibic = conn->c_transport_data; + if (ibic && ibic->i_cm_id == cm_id) + ret = trans->cm_initiate_connect(cm_id); + else + rds_conn_drop(conn); + } break; #if RDMA_RDS_APM_SUPPORTED