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 11/20] lpfc: Fix KASAN slab-out-of-bounds in lpfc_unreg_rpi routine
Date: Wed,  7 Jul 2021 11:43:42 -0700	[thread overview]
Message-ID: <20210707184351.67872-12-jsmart2021@gmail.com> (raw)
In-Reply-To: <20210707184351.67872-1-jsmart2021@gmail.com>

In lpfc_offline_prep() an RPI is freed and nlp_rpi set to 0xFFFF
before calling lpfc_unreg_rpi().  Unfortunately, lpfc_unreg_rpi()
uses nlp_rpi to index the sli4_hba.rpi_ids[] array.

In lpfc_offline_prep, the unreg rpi before freeing the rpi.

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_init.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index 6867b02219b0..2d277979a56a 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -3541,6 +3541,8 @@ lpfc_offline_prep(struct lpfc_hba *phba, int mbx_action)
 				spin_lock_irq(&ndlp->lock);
 				ndlp->nlp_flag &= ~NLP_NPR_ADISC;
 				spin_unlock_irq(&ndlp->lock);
+
+				lpfc_unreg_rpi(vports[i], ndlp);
 				/*
 				 * Whenever an SLI4 port goes offline, free the
 				 * RPI. Get a new RPI when the adapter port
@@ -3556,7 +3558,6 @@ lpfc_offline_prep(struct lpfc_hba *phba, int mbx_action)
 					lpfc_sli4_free_rpi(phba, ndlp->nlp_rpi);
 					ndlp->nlp_rpi = LPFC_RPI_ALLOC_ERROR;
 				}
-				lpfc_unreg_rpi(vports[i], ndlp);
 
 				if (ndlp->nlp_type & NLP_FABRIC) {
 					lpfc_disc_state_machine(vports[i], ndlp,
-- 
2.26.2


  parent reply	other threads:[~2021-07-07 18:44 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-07 18:43 [PATCH 00/20] lpfc: Update lpfc to revision 12.8.0.11 James Smart
2021-07-07 18:43 ` [PATCH 01/20] lpfc: Fix NVME support reporting in log message James Smart
2021-07-07 18:43 ` [PATCH 02/20] lpfc: Remove use of kmalloc in trace event logging James Smart
2021-07-07 18:43 ` [PATCH 03/20] lpfc: Improve firmware download logging James Smart
2021-07-07 18:43 ` [PATCH 04/20] lpfc: Fix function description comments for vmid routines James Smart
2021-07-07 18:43 ` [PATCH 05/20] lpfc: Discovery state machine fixes for LOGO handling James Smart
2021-07-07 18:43 ` [PATCH 06/20] lpfc: Fix target reset handler from falsely returning FAILURE James Smart
2021-07-07 18:43 ` [PATCH 07/20] lpfc: Keep ndlp reference until after freeing the iocb after els handling James Smart
2021-07-07 18:43 ` [PATCH 08/20] lpfc: Fix null ptr dereference with NPIV ports for RDF handling James Smart
2021-07-07 18:43 ` [PATCH 09/20] lpfc: Fix memory leaks in error paths while issuing ELS RDF/SCR request James Smart
2021-07-07 18:43 ` [PATCH 10/20] lpfc: Remove REG_LOGIN check requirement to issue an ELS RDF James Smart
2021-07-07 18:43 ` James Smart [this message]
2021-07-07 18:43 ` [PATCH 12/20] lpfc: Clear outstanding active mailbox during PCI function reset James Smart
2021-07-07 18:43 ` [PATCH 13/20] lpfc: Use PBDE feature enabled bit to determine PBDE support James Smart
2021-07-07 18:43 ` [PATCH 14/20] lpfc: Enable adisc discovery after RSCN by default James Smart
2021-07-07 18:43 ` [PATCH 15/20] lpfc: Delay unregistering from transport until GIDFT or ADISC completes James Smart
2021-07-07 18:43 ` [PATCH 16/20] lpfc: Call discovery state machine when handling PLOGI/ADISC completions James Smart
2021-07-07 18:43 ` [PATCH 17/20] lpfc: Skip reg_vpi when link is down for SLI3 in ADISC cmpl path James Smart
2021-07-07 18:43 ` [PATCH 18/20] lpfc: Skip issuing ADISC when node is in NPR state James Smart
2021-07-07 18:43 ` [PATCH 19/20] lpfc: Update lpfc version to 12.8.0.11 James Smart
2021-07-07 18:43 ` [PATCH 20/20] lpfc: Copyright updates for 12.8.0.11 patches James Smart
2021-07-19  2:31 ` [PATCH 00/20] lpfc: Update lpfc to revision 12.8.0.11 Martin K. Petersen
2021-07-24  2:13 ` 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=20210707184351.67872-12-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.