From patchwork Tue Mar 12 23:30:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Smart X-Patchwork-Id: 10850235 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 52F6C13B5 for ; Tue, 12 Mar 2019 23:31:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3F82A29705 for ; Tue, 12 Mar 2019 23:31:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3438529919; Tue, 12 Mar 2019 23:31:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D794429705 for ; Tue, 12 Mar 2019 23:30:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727321AbfCLXa7 (ORCPT ); Tue, 12 Mar 2019 19:30:59 -0400 Received: from mail-pf1-f193.google.com ([209.85.210.193]:42657 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727398AbfCLXa6 (ORCPT ); Tue, 12 Mar 2019 19:30:58 -0400 Received: by mail-pf1-f193.google.com with SMTP id n74so2937279pfi.9 for ; Tue, 12 Mar 2019 16:30:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ihBcxnMEg/T1PkeyFe/TZ0QTUheTC2a0WGVZd59XZZs=; b=cQoAAFt0RVKEys6k/1bO90s3zGrox3jcPTvVocePWQgvoxt2zabNFP1NeMphIxjt/j rtvsyAwqY58fTA4qaWeSGKCnqRQpZVPZuxiyCk0SHCsWURWCx5Nj4jO3rS0RoGgDicGt JMRGZ0S8eiTV84vZHD3hFVvEtLpH2Sh4P8otFfsvLhKkT+K4kAmSZOkO7OExHpq9bekx vk8TMoCoSPp+syZiT/j3qwN5E3eZ9QekN4hLJoFqhrt1W/yahe5L5iD4x+VKPHA2lU6B DsfW8DSFeSMcRswKEamZ0AsnqubtJB2jI6WM7zTH8CH75+pkzzLQOYJQjy4E52o0m/8q an5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ihBcxnMEg/T1PkeyFe/TZ0QTUheTC2a0WGVZd59XZZs=; b=a4O4gvhQ1+nsIm223XxKJKfkHpEBPhMIiKLtudnsnOsQzi1yOKHWzlUP32GQ35PZsg FPWuRMffmh1ra/EC3mt0M6BIyDjj2Hko1cp3FYy7+Xd+x4xrwLyd5HYu8vtekyxCV/yj PT06930amgg8/sULuAmPQeytxDUGdNoF7O5/rFEZMv1dxpTVpxBjYQRJCNW6ULvFzZN9 ji0IZjvNHAS7ws/F96eVsfmwjPyGj1VPOjxiyJJuOkLIddfDtgRtkj49kPkjWiP8eKh8 ninaUTDn4JQJcaQxpcrEnCyLVIGKEiv2EJ0T8lWLbCeirrpcvhHDQ84IGEgrrTjWe7q2 38fw== X-Gm-Message-State: APjAAAUd1Vq/GOgDayj+KVmTRLSbHwVAHozBjXpjUCawp1VXS+LfDpwD 3QknShv9xcQ3YH5GOOaNXQ1DbBRE X-Google-Smtp-Source: APXvYqwl0IhbKfZPg/VYGjhhG2sVW33SiKmOyfyCZgD+TwJXTEWXSMgsOEIVR1tK/sSAH567lGqVFw== X-Received: by 2002:a17:902:b413:: with SMTP id x19mr42332266plr.256.1552433457064; Tue, 12 Mar 2019 16:30:57 -0700 (PDT) Received: from pallmd1.broadcom.com ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id d11sm17284409pfh.29.2019.03.12.16.30.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 12 Mar 2019 16:30:56 -0700 (PDT) From: James Smart To: linux-scsi@vger.kernel.org Cc: James Smart , Dick Kennedy Subject: [PATCH 14/30] lpfc: Fix driver crash in target reset handler Date: Tue, 12 Mar 2019 16:30:17 -0700 Message-Id: <20190312233033.32670-15-jsmart2021@gmail.com> X-Mailer: git-send-email 2.13.7 In-Reply-To: <20190312233033.32670-1-jsmart2021@gmail.com> References: <20190312233033.32670-1-jsmart2021@gmail.com> Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP It's possible for the scsi error handler to fire and call the target reset handler simultaneously to the driver logging out and relogging into the system. If hit just right, the re-login may not have fully re-established the remote port and the rdata->pnod structure may be null. Check for NULL in the reset handler and return failure if NULL. Signed-off-by: Dick Kennedy Signed-off-by: James Smart --- drivers/scsi/lpfc/lpfc_scsi.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c index f787d6894daf..2cfb052d35d8 100644 --- a/drivers/scsi/lpfc/lpfc_scsi.c +++ b/drivers/scsi/lpfc/lpfc_scsi.c @@ -5049,7 +5049,7 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd) rdata = lpfc_rport_data_from_scsi_device(cmnd->device); if (!rdata || !rdata->pnode) { lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP, - "0798 Device Reset rport failure: rdata x%p\n", + "0798 Device Reset rdata failure: rdata x%p\n", rdata); return FAILED; } @@ -5118,9 +5118,10 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd) int status; rdata = lpfc_rport_data_from_scsi_device(cmnd->device); - if (!rdata) { + if (!rdata || !rdata->pnode) { lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP, - "0799 Target Reset rport failure: rdata x%p\n", rdata); + "0799 Target Reset rdata failure: rdata x%p\n", + rdata); return FAILED; } pnode = rdata->pnode;