Target/iser: Avoid calling rdma_disconnect twice
authorSagi Grimberg <sagig@mellanox.com>
Wed, 2 Jul 2014 13:19:26 +0000 (16:19 +0300)
committerNicholas Bellinger <nab@linux-iscsi.org>
Mon, 15 Sep 2014 21:02:30 +0000 (14:02 -0700)
rdma_disconnect may be called in 2 code flows:
- isert_wait_conn: disconnect initiated be the target
- disconnected_handler: disconnect invoked by the initiator

In case isert_conn->disconnect is true then rdma_disconnect
was called in disconnected handler, no need to call it again
from isert_wait_conn.

Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/infiniband/ulp/isert/ib_isert.c

index 9959cd1faad9685a5efff51980e4ad1dad31d193..9e21747acce649530d77e9558f3661842f87b420 100644 (file)
@@ -3215,7 +3215,7 @@ static void isert_wait_conn(struct iscsi_conn *conn)
        pr_debug("isert_wait_conn: Starting \n");
 
        mutex_lock(&isert_conn->conn_mutex);
-       if (isert_conn->conn_cm_id) {
+       if (isert_conn->conn_cm_id && !isert_conn->disconnect) {
                pr_debug("Calling rdma_disconnect from isert_wait_conn\n");
                rdma_disconnect(isert_conn->conn_cm_id);
        }