Received: by 10.223.164.202 with SMTP id h10csp1046697wrb; Tue, 7 Nov 2017 20:35:02 -0800 (PST) X-Google-Smtp-Source: ABhQp+Q32hOQ3okhAjDNS9TQ5dmhqTjSajg8LBsG0R77zfKK+Irlyc1GPKprWo5x8u1BknEPeSG5 X-Received: by 10.159.206.131 with SMTP id bg3mr1028229plb.124.1510115702188; Tue, 07 Nov 2017 20:35:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510115702; cv=none; d=google.com; s=arc-20160816; b=F8cevyzmXXfVagO+YQbWLLHNiFqS/btqH0cgfMx/xvyN2ORRB48Xo+Ip8b0rlLljc8 gsR1VcfYPGK9YIIidGK+j83A/wv0Fsqy4ZoOJ2PwI8078XSKoLWC2EQOtnhDpnaONEEX qXr7bNLaakAvk+NSNE0UgjDl+9ukLTejSBoCknWeRgQa/hMAOgRNvp/bERFOOAA17EvX lYkbd23UWMiEWvmJK6ze2V5msieEH6GGgDdh5BWiRYf7vCxPNEanVYKpYBffcaeCge5+ wDxtYQEsmR2bN+AtDFhLMfSPoKyhukIbRWyD7ntyV9InZ2extOr9691S3K9J9tKjlYzP 914A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=3y1B+0NGRcoaSPPjUZzMu/+2mAZltn/qLZvUkF2GtA4=; b=L3KJUK8Ij2xLiTXE/Al5hoHZEGuBUupItfajlTQq8G1yN+D2PvrS7JlSzycH5VE9pd JRRBw99jahfRwcaNzFvp624G9o2BTdrCk+3t6sizYX8xBcjMuwIuuzFijdcp5ySBeJU3 pXWd2t2JEsqpas+N8ARC0M+h00iZdk+jGvN2omzuEoZdS9oD1aIjBz4V3AhyZCaiLpFw olrP59voA+WHExJtg11jjWPb1hjAGTa7dC02Tx5Keh0b0bas0liadahVGkaIUn2q+NF2 aOe68p3HoydODZBrWMwBob/goOv1X/sBWgAgf8g0O0qC1qAk1/fCAk9sFeFe2CMRRaan O6Kg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p7si2745631pgc.577.2017.11.07.20.34.49; Tue, 07 Nov 2017 20:35:02 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752641AbdKHEbT (ORCPT + 91 others); Tue, 7 Nov 2017 23:31:19 -0500 Received: from mail.linux-iscsi.org ([67.23.28.174]:60310 "EHLO linux-iscsi.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752199AbdKHEbL (ORCPT ); Tue, 7 Nov 2017 23:31:11 -0500 Received: from linux-iscsi.org (localhost [127.0.0.1]) by linux-iscsi.org (Postfix) with ESMTP id 5BA2640007; Wed, 8 Nov 2017 04:31:58 +0000 (UTC) From: "Nicholas A. Bellinger" To: target-devel Cc: linux-scsi , lkml , Nicholas Bellinger , Mike Christie , Hannes Reinecke , Bart Van Assche Subject: [PATCH 2/6] target: Fix caw_sem leak in transport_generic_request_failure Date: Wed, 8 Nov 2017 04:31:48 +0000 Message-Id: <1510115512-15617-3-git-send-email-nab@linux-iscsi.org> X-Mailer: git-send-email 1.7.2.5 In-Reply-To: <1510115512-15617-1-git-send-email-nab@linux-iscsi.org> References: <1510115512-15617-1-git-send-email-nab@linux-iscsi.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nicholas Bellinger With the recent addition of transport_check_aborted_status() within transport_generic_request_failure() to avoid sending a SCSI status exception after CMD_T_ABORTED w/ TAS=1 has occured, it introduced a COMPARE_AND_WRITE early failure regression. Namely when COMPARE_AND_WRITE fails and se_device->caw_sem has been taken by sbc_compare_and_write(), if the new check for transport_check_aborted_status() returns true and exits, cmd->transport_complete_callback() -> compare_and_write_post() is skipped never releasing se_device->caw_sem. This regression was originally introduced by: commit e3b88ee95b4e4bf3e9729a4695d695b9c7c296c8 Author: Bart Van Assche Date: Tue Feb 14 16:25:45 2017 -0800 target: Fix handling of aborted failed commands To address this bug, move the transport_check_aborted_status() call after transport_complete_task_attr() and cmd->transport_complete_callback(). Cc: Mike Christie Cc: Hannes Reinecke Cc: Bart Van Assche Signed-off-by: Nicholas Bellinger --- drivers/target/target_core_transport.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index c33d1e9..d02218c 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -1729,9 +1729,6 @@ void transport_generic_request_failure(struct se_cmd *cmd, { int ret = 0, post_ret = 0; - if (transport_check_aborted_status(cmd, 1)) - return; - pr_debug("-----[ Storage Engine Exception; sense_reason %d\n", sense_reason); target_show_cmd("-----[ ", cmd); @@ -1740,6 +1737,7 @@ void transport_generic_request_failure(struct se_cmd *cmd, * For SAM Task Attribute emulation for failed struct se_cmd */ transport_complete_task_attr(cmd); + /* * Handle special case for COMPARE_AND_WRITE failure, where the * callback is expected to drop the per device ->caw_sem. @@ -1748,6 +1746,9 @@ void transport_generic_request_failure(struct se_cmd *cmd, cmd->transport_complete_callback) cmd->transport_complete_callback(cmd, false, &post_ret); + if (transport_check_aborted_status(cmd, 1)) + return; + switch (sense_reason) { case TCM_NON_EXISTENT_LUN: case TCM_UNSUPPORTED_SCSI_OPCODE: -- 1.9.1 From 1585974276888472903@xxx Tue Dec 05 19:42:14 +0000 2017 X-GM-THRID: 1585974276888472903 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread