From f0ca74fc505a75ca2b8d20019d15fbbb6fbe5439 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 8 Oct 2013 16:47:58 +0000 Subject: [PATCH] scst: Avoid that adding an initiator to an initiator group can trigger a kernel warning (merge r4467 from trunk) git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/2.2.x@5051 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/src/scst_lib.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index e8c9038b8..aad776cd9 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -1722,7 +1722,7 @@ static void scst_check_reassign_sess(struct scst_session *sess) struct list_head *head; struct scst_tgt_dev *tgt_dev; bool luns_changed = false; - bool add_failed, something_freed, not_needed_freed = false; + bool add_failed, something_freed; TRACE_ENTRY(); @@ -1747,7 +1747,7 @@ static void scst_check_reassign_sess(struct scst_session *sess) retry_add: add_failed = false; list_for_each_entry(acg_dev, &acg->acg_dev_list, acg_dev_list_entry) { - unsigned int inq_changed_ua_needed = 0; + bool inq_changed_ua_needed = false; for (i = 0; i < SESS_TGT_DEV_LIST_HASH_SIZE; i++) { head = &sess->sess_tgt_dev_list[i]; @@ -1763,8 +1763,13 @@ retry_add: (unsigned long long)tgt_dev->lun); tgt_dev->acg_dev = acg_dev; goto next; - } else if (tgt_dev->lun == acg_dev->lun) + } else if (tgt_dev->lun == acg_dev->lun) { + TRACE_MGMT_DBG("Replacing LUN %lld", + (long long)tgt_dev->lun); + scst_free_tgt_dev(tgt_dev); inq_changed_ua_needed = 1; + break; + } } } @@ -1781,14 +1786,12 @@ retry_add: break; } - tgt_dev->inq_changed_ua_needed = inq_changed_ua_needed || - not_needed_freed; + tgt_dev->inq_changed_ua_needed = inq_changed_ua_needed; next: continue; } something_freed = false; - not_needed_freed = true; for (i = 0; i < SESS_TGT_DEV_LIST_HASH_SIZE; i++) { struct scst_tgt_dev *t; head = &sess->sess_tgt_dev_list[i];