Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp17893892ybl; Thu, 2 Jan 2020 14:15:14 -0800 (PST) X-Google-Smtp-Source: APXvYqzSrYXeerH2H/kdJH1JX3G4uyCoHdlAnef2FASeSrpS7jV+CVnnn8ffACyW5aZPra6w7/J2 X-Received: by 2002:aca:2407:: with SMTP id n7mr3136637oic.14.1578003314735; Thu, 02 Jan 2020 14:15:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578003314; cv=none; d=google.com; s=arc-20160816; b=IdVAFvZNtIS5BKN4DwHAPoRo8tjSy6c1Ib4lRRnT8unE90UU90b3qK27UBSqhyD9ZW 0rAnK3wI1nwG3qY96W1fFNGWkKye36Eh488Atx7/755ix8H1j5bIvDq9sCM9AxwwvOJf xMbOg0x9fgUw0dOl434FXFjUwSxSjXk9ZXNrKctuHoI/iKkzagROPyVeuFG5CooVbLMr XA8zvU1KZ7CX5497serTTLkrV0aJBFfdOmFdgsjtBAXQrT4642bMpBOUyMtN0G2USOSC 50CphpI6Pdotl1IihKB32ZNbIhrCxamE/hhL5DVKt0Id7n8K3nwCZQmcYNtkPGF5HT2E Movg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=0WKRdrP58IFWJiamUWRRvbrp5VysN7rSggKghEgeous=; b=T+vYQeRJaSOw6fFa2vcytDqXVEWbZA540JFoat9HJz+U4SGmldzPm3I6dJ34IkX+5C DcpzxOFQfxzRCYwEc0aJXw3JoEdyVrOM0UvcP9xfw20faPTcLWGPSpzQUjE3vzdVHa02 R9wfvm6VTizmptQs9Iy6efXjBcwp+x9y1vaL60hq8noMvBg72/WNZUxeyRS23sj8YruX Zxz0cQ+8gU1WUGMeWWQynRzw1W34V5JnMVpDu+0eF2wEAWHqfb4HDfazzypEd+IyoCTn cBsbH59ki/+1D6L2QpR6rOof2iNIR+YCR1b1vfFDZ5sFu/xKkWh2ZbwgJQn7znaqnMz1 Ntag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=PeckJHlX; 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 v67si28468546oia.26.2020.01.02.14.15.02; Thu, 02 Jan 2020 14:15:14 -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; dkim=pass header.i=@kernel.org header.s=default header.b=PeckJHlX; 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 S1727558AbgABWMt (ORCPT + 99 others); Thu, 2 Jan 2020 17:12:49 -0500 Received: from mail.kernel.org ([198.145.29.99]:52108 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727535AbgABWMq (ORCPT ); Thu, 2 Jan 2020 17:12:46 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id F2BEC22314; Thu, 2 Jan 2020 22:12:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578003165; bh=r8HOrpNAVto9yK9VmPgX9dGvmY6Z5l7uhKkZaPzar7k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PeckJHlXyVVqMkRiZh8Vledd0EJrYM/L0dFki8cnWGTmuPFAVctCWemcZBxPM//1b ajQTV/Lfbn4cLMD7ky4XT6F7EbTxezxQlJM0wExGwwBQkgalVg37/ztxH1ziUv24jj 4rnDFVv23dp0GjkxKHD0Sq/EYhUWRPYd9luz9+nI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dick Kennedy , James Smart , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 5.4 047/191] scsi: lpfc: Fix duplicate unreg_rpi error in port offline flow Date: Thu, 2 Jan 2020 23:05:29 +0100 Message-Id: <20200102215834.942431570@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200102215829.911231638@linuxfoundation.org> References: <20200102215829.911231638@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: James Smart [ Upstream commit 7cfd5639d99bec0d27af089d0c8c114330e43a72 ] If the driver receives a login that is later then LOGO'd by the remote port (aka ndlp), the driver, upon the completion of the LOGO ACC transmission, will logout the node and unregister the rpi that is being used for the node. As part of the unreg, the node's rpi value is replaced by the LPFC_RPI_ALLOC_ERROR value. If the port is subsequently offlined, the offline walks the nodes and ensures they are logged out, which possibly entails unreg'ing their rpi values. This path does not validate the node's rpi value, thus doesn't detect that it has been unreg'd already. The replaced rpi value is then used when accessing the rpi bitmask array which tracks active rpi values. As the LPFC_RPI_ALLOC_ERROR value is not a valid index for the bitmask, it may fault the system. Revise the rpi release code to detect when the rpi value is the replaced RPI_ALLOC_ERROR value and ignore further release steps. Link: https://lore.kernel.org/r/20191105005708.7399-2-jsmart2021@gmail.com Signed-off-by: Dick Kennedy Signed-off-by: James Smart Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/lpfc/lpfc_sli.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 9c5b1d138eb1..2b0e7b32c2df 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -18187,6 +18187,13 @@ lpfc_sli4_alloc_rpi(struct lpfc_hba *phba) static void __lpfc_sli4_free_rpi(struct lpfc_hba *phba, int rpi) { + /* + * if the rpi value indicates a prior unreg has already + * been done, skip the unreg. + */ + if (rpi == LPFC_RPI_ALLOC_ERROR) + return; + if (test_and_clear_bit(rpi, phba->sli4_hba.rpi_bmask)) { phba->sli4_hba.rpi_count--; phba->sli4_hba.max_cfg_param.rpi_used--; -- 2.20.1