All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Smart <jsmart2021@gmail.com>
To: linux-scsi@vger.kernel.org
Cc: James Smart <jsmart2021@gmail.com>, Justin Tee <justin.tee@broadcom.com>
Subject: [PATCH 03/14] lpfc: Fix premature rpi release for unsolicited TPLS and LS_RJT
Date: Fri, 10 Sep 2021 16:31:48 -0700	[thread overview]
Message-ID: <20210910233159.115896-4-jsmart2021@gmail.com> (raw)
In-Reply-To: <20210910233159.115896-1-jsmart2021@gmail.com>

A test scenario has a target issuing a TPLS after accepting the
driver's PRLI.  TPLS is not supported by the driver so it rejects
the ELS.  However, the reject was only happening on the primary N_Port.
If the TPLS was to a NPIV vport, not only would it reject the ELS, but
it would act on the TPLS, starting devloss, then unregister from the
SCSI transport and release the node. When devloss expired, it would
access the node again and cause a page faul.

Fix by altering the NPIV code to recognize that a correctly registered
node can reject unsolicited ELS IO and to not unregister with the SCSI
transport and tear the node down.  Add a check of the fc4_xpt_flags so
that only a zero value allows the unreg and teardown.

Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
---
 drivers/scsi/lpfc/lpfc_els.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
index df5fc223ddb2..262101e172ad 100644
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -5295,6 +5295,7 @@ lpfc_cmpl_els_rsp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
 	 */
 	if (phba->sli_rev == LPFC_SLI_REV4 &&
 	    (vport && vport->port_type == LPFC_NPIV_PORT) &&
+	    !(ndlp->fc4_xpt_flags & SCSI_XPT_REGD) &&
 	    ndlp->nlp_flag & NLP_RELEASE_RPI) {
 		lpfc_sli4_free_rpi(phba, ndlp->nlp_rpi);
 		spin_lock_irq(&ndlp->lock);
@@ -5598,11 +5599,12 @@ lpfc_els_rsp_reject(struct lpfc_vport *vport, uint32_t rejectError,
 	}
 
 	/* The NPIV instance is rejecting this unsolicited ELS. Make sure the
-	 * node's assigned RPI needs to be released as this node will get
-	 * freed.
+	 * node's assigned RPI gets released provided this node is not already
+	 * registered with the transport.
 	 */
 	if (phba->sli_rev == LPFC_SLI_REV4 &&
-	    vport->port_type == LPFC_NPIV_PORT) {
+	    vport->port_type == LPFC_NPIV_PORT &&
+	    !(ndlp->fc4_xpt_flags & SCSI_XPT_REGD)) {
 		spin_lock_irq(&ndlp->lock);
 		ndlp->nlp_flag |= NLP_RELEASE_RPI;
 		spin_unlock_irq(&ndlp->lock);
-- 
2.26.2


  parent reply	other threads:[~2021-09-10 23:32 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-10 23:31 [PATCH 00/14] lpfc: Update lpfc to revision 14.0.0.2 James Smart
2021-09-10 23:31 ` [PATCH 01/14] lpfc: Fix list_add corruption in lpfc_drain_txq James Smart
2021-09-10 23:31 ` [PATCH 02/14] lpfc: Don't release final kref on Fport node while ABTS outstanding James Smart
2021-09-10 23:31 ` James Smart [this message]
2021-09-10 23:31 ` [PATCH 04/14] lpfc: Fix hang on unload due to stuck fport node James Smart
2021-09-10 23:31 ` [PATCH 05/14] lpfc: Fix rediscovery of tape device after issue lip James Smart
2021-09-10 23:31 ` [PATCH 06/14] lpfc: Don't remove ndlp on PRLI errors in P2P mode James Smart
2021-09-10 23:31 ` [PATCH 07/14] lpfc: Fix NVME I/O failover to non-optimized path James Smart
2021-09-10 23:31 ` [PATCH 08/14] lpfc: Fix FCP I/O flush functionality for TMF routines James Smart
2021-09-10 23:31 ` [PATCH 09/14] lpfc: Fix EEH support for NVME I/O James Smart
2021-09-10 23:31 ` [PATCH 10/14] lpfc: Adjust bytes received vales during cmf timer interval James Smart
2021-09-10 23:31 ` [PATCH 11/14] lpfc: Fix I/O block after enabling managed congestion mode James Smart
2021-09-10 23:31 ` [PATCH 12/14] lpfc: Zero CGN stats only during initial driver load and stat reset James Smart
2021-09-10 23:31 ` [PATCH 13/14] lpfc: Improve PBDE checks during SGL processing James Smart
2021-09-10 23:31 ` [PATCH 14/14] lpfc: Update lpfc version to 14.0.0.2 James Smart
2021-09-15  3:16 ` [PATCH 00/14] lpfc: Update lpfc to revision 14.0.0.2 Martin K. Petersen
2021-09-22  4:45 ` Martin K. Petersen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210910233159.115896-4-jsmart2021@gmail.com \
    --to=jsmart2021@gmail.com \
    --cc=justin.tee@broadcom.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.