From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.hgst.iphmx.com ([68.232.141.245]:17288 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750930AbdBOA0o (ORCPT ); Tue, 14 Feb 2017 19:26:44 -0500 From: Bart Van Assche To: "Nicholas A . Bellinger" CC: , Bart Van Assche , Hannes Reinecke , Christoph Hellwig , David Disseldorp , Subject: [PATCH v6 15/33] target: Avoid circular waits between LUN resets Date: Tue, 14 Feb 2017 16:25:54 -0800 Message-ID: <20170215002612.14566-16-bart.vanassche@sandisk.com> In-Reply-To: <20170215002612.14566-1-bart.vanassche@sandisk.com> References: <20170215002612.14566-1-bart.vanassche@sandisk.com> MIME-Version: 1.0 Content-Type: text/plain Sender: stable-owner@vger.kernel.org List-ID: If an initiator submits a LUN reset while a previous LUN reset is still being processed, both LUN resets will be added to dev_tmr_list. Avoid that this results in a circular wait between the two LUN resets by removing a LUN reset from dev_tmr_list before scanning that list for TMFs to wait for. Signed-off-by: Bart Van Assche Fixes: c66ac9db8d4a ("target: Add LIO target core to kernel v2.6.38") Cc: Hannes Reinecke Cc: Christoph Hellwig Cc: David Disseldorp Cc: --- drivers/target/target_core_tmr.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/target/target_core_tmr.c b/drivers/target/target_core_tmr.c index 5eb164dac5cc..5c671fa67339 100644 --- a/drivers/target/target_core_tmr.c +++ b/drivers/target/target_core_tmr.c @@ -230,13 +230,8 @@ static void core_tmr_drain_tmr_list( * LUN_RESET tmr.. */ spin_lock_irqsave(&dev->se_tmr_lock, flags); + list_del_init(&tmr->tmr_list); list_for_each_entry_safe(tmr_p, tmr_pp, &dev->dev_tmr_list, tmr_list) { - /* - * Allow the received TMR to return with FUNCTION_COMPLETE. - */ - if (tmr_p == tmr) - continue; - cmd = tmr_p->task_cmd; if (!cmd) { pr_err("Unable to locate struct se_cmd for TMR\n"); -- 2.11.0