diff --git a/lib/iscsi/conn.c b/lib/iscsi/conn.c index f07c3767d..4b12e56cc 100644 --- a/lib/iscsi/conn.c +++ b/lib/iscsi/conn.c @@ -178,6 +178,7 @@ login_timeout(void *arg) if (conn->state < ISCSI_CONN_STATE_EXITING) { conn->state = ISCSI_CONN_STATE_EXITING; } + spdk_poller_unregister(&conn->login_timer); return SPDK_POLLER_BUSY; } diff --git a/lib/iscsi/iscsi.c b/lib/iscsi/iscsi.c index 625129c48..89c5a62f7 100644 --- a/lib/iscsi/iscsi.c +++ b/lib/iscsi/iscsi.c @@ -1148,7 +1148,6 @@ iscsi_conn_login_pdu_success_complete(void *arg) { struct spdk_iscsi_conn *conn = arg; - spdk_poller_unregister(&conn->login_timer); if (conn->state >= ISCSI_CONN_STATE_EXITING) { /* Connection is being exited before this callback is executed. */ @@ -2226,6 +2225,7 @@ iscsi_pdu_payload_op_login(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu * return 0; } + spdk_poller_unregister(&conn->login_timer); rsp_pdu = conn->login_rsp_pdu; reqh = (struct iscsi_bhs_login_req *)&pdu->bhs;