]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: check for valid rdma id before initiating connection
authorBang Nguyen <bang.nguyen@oracle.com>
Mon, 17 Jun 2013 20:32:18 +0000 (13:32 -0700)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Wed, 8 Jul 2015 20:37:59 +0000 (13:37 -0700)
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 <zheng.x.li@oracle.com>
(cherry picked from commit 5528367d56539f817182faa1f0ea35779ccac14e)

net/rds/rdma_transport.c

index e756376ea7094f9bc6980178ba970304bc08db04..f7f87bb83b1602b3448cf50036955e53a95a6cc2 100644 (file)
@@ -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