From ef662157e76ad02d077cea2e7a5c456a14729e29 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Sat, 5 Oct 2013 15:42:37 +0000 Subject: [PATCH] iscsi-scst: Fix a race condition triggered by logout (merge r5019 from the trunk) git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/2.2.x@5023 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- iscsi-scst/kernel/iscsi.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/iscsi-scst/kernel/iscsi.c b/iscsi-scst/kernel/iscsi.c index 46889becb..7c2675bc8 100644 --- a/iscsi-scst/kernel/iscsi.c +++ b/iscsi-scst/kernel/iscsi.c @@ -2905,11 +2905,15 @@ void cmnd_tx_end(struct iscsi_cmnd *cmnd) if (unlikely(cmnd->should_close_conn)) { if (cmnd->should_close_all_conn) { + struct iscsi_target *target = cmnd->conn->session->target; + PRINT_INFO("Closing all connections for target %x at " - "initiator's %s request", - cmnd->conn->session->target->tid, + "initiator's %s request", target->tid, conn->session->initiator_name); - target_del_all_sess(cmnd->conn->session->target, 0); + + mutex_lock(&target->target_mutex); + target_del_all_sess(target, 0); + mutex_unlock(&target->target_mutex); } else { PRINT_INFO("Closing connection at initiator's %s " "request", conn->session->initiator_name);