IB/isert: Fix possible list corruption in CMA handler
[linux-2.6-block.git] / drivers / infiniband / ulp / isert / ib_isert.c
index b4809d2372506bc444efb6f02900580f132662db..00a7303c8cc60ef111e7c2e0cbc09c3c2be4ff29 100644 (file)
@@ -657,9 +657,13 @@ static int
 isert_connect_error(struct rdma_cm_id *cma_id)
 {
        struct isert_conn *isert_conn = cma_id->qp->qp_context;
+       struct isert_np *isert_np = cma_id->context;
 
        ib_drain_qp(isert_conn->qp);
+
+       mutex_lock(&isert_np->mutex);
        list_del_init(&isert_conn->node);
+       mutex_unlock(&isert_np->mutex);
        isert_conn->cm_id = NULL;
        isert_put_conn(isert_conn);