public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lpfc: Fix NULL pointer dereference during PCI error recovery
@ 2017-05-17 22:02 Guilherme G. Piccoli
  2017-05-18  0:21 ` Martin K. Petersen
  0 siblings, 1 reply; 3+ messages in thread
From: Guilherme G. Piccoli @ 2017-05-17 22:02 UTC (permalink / raw)
  To: linux-scsi; +Cc: raphasil, james.smart, dick.kennedy, jsmart2021, gpiccoli

Recent commit on patchset "lpfc updates for 11.2.0.14" fixed an issue
about dereferencing a NULL pointer on port reset. The specific commit,
named "lpfc: Fix system crash when port is reset.", is missing a check
against NULL pointer on lpfc_els_flush_cmd() though.

Since we destroy the queues on adapter resets, like in PCI error
recovery path, we need the validation present on this patch in order
to avoid a NULL pointer dereference when trying to flush commands of
ELS wq, after it has been destroyed (which would lead to a kernel oops).

Tested-by: Raphael Silva <raphasil@linux.vnet.ibm.com>
Signed-off-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
---

This patch was rebased against 4.12/scsi-fixes on mkp tree.
I couldn't figure a better way to refer to commits in this
message because they weren't merged on linus tree yet, so
the sha hashes wouldn't make sense. If you have some idea,
please let me know and I can send v2 if desired.

 drivers/scsi/lpfc/lpfc_els.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/scsi/lpfc/lpfc_els.c b/drivers/scsi/lpfc/lpfc_els.c
index 1d36f82fa369..8e532b39ae93 100644
--- a/drivers/scsi/lpfc/lpfc_els.c
+++ b/drivers/scsi/lpfc/lpfc_els.c
@@ -7451,6 +7451,13 @@ lpfc_els_flush_cmd(struct lpfc_vport *vport)
 	 */
 	spin_lock_irq(&phba->hbalock);
 	pring = lpfc_phba_elsring(phba);
+
+	/* Bail out if we've no ELS wq, like in PCI error recovery case. */
+	if (unlikely(!pring)) {
+		spin_unlock_irq(&phba->hbalock);
+		return;
+	}
+
 	if (phba->sli_rev == LPFC_SLI_REV4)
 		spin_lock(&pring->ring_lock);
 
-- 
2.12.0.rc0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] lpfc: Fix NULL pointer dereference during PCI error recovery
  2017-05-17 22:02 [PATCH] lpfc: Fix NULL pointer dereference during PCI error recovery Guilherme G. Piccoli
@ 2017-05-18  0:21 ` Martin K. Petersen
  2017-05-18 13:35   ` Guilherme G. Piccoli
  0 siblings, 1 reply; 3+ messages in thread
From: Martin K. Petersen @ 2017-05-18  0:21 UTC (permalink / raw)
  To: Guilherme G. Piccoli
  Cc: linux-scsi, raphasil, james.smart, dick.kennedy, jsmart2021


Guilherme,

> Recent commit on patchset "lpfc updates for 11.2.0.14" fixed an issue
> about dereferencing a NULL pointer on port reset. The specific commit,
> named "lpfc: Fix system crash when port is reset.", is missing a check
> against NULL pointer on lpfc_els_flush_cmd() though.
>
> Since we destroy the queues on adapter resets, like in PCI error
> recovery path, we need the validation present on this patch in order
> to avoid a NULL pointer dereference when trying to flush commands of
> ELS wq, after it has been destroyed (which would lead to a kernel
> oops).

Applied to 4.12/scsi-fixes. Thank you!

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] lpfc: Fix NULL pointer dereference during PCI error recovery
  2017-05-18  0:21 ` Martin K. Petersen
@ 2017-05-18 13:35   ` Guilherme G. Piccoli
  0 siblings, 0 replies; 3+ messages in thread
From: Guilherme G. Piccoli @ 2017-05-18 13:35 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: linux-scsi, raphasil, james.smart, dick.kennedy, jsmart2021

On 05/17/2017 09:21 PM, Martin K. Petersen wrote:
> 
> Guilherme,
> 
>> Recent commit on patchset "lpfc updates for 11.2.0.14" fixed an issue
>> about dereferencing a NULL pointer on port reset. The specific commit,
>> named "lpfc: Fix system crash when port is reset.", is missing a check
>> against NULL pointer on lpfc_els_flush_cmd() though.
>>
>> Since we destroy the queues on adapter resets, like in PCI error
>> recovery path, we need the validation present on this patch in order
>> to avoid a NULL pointer dereference when trying to flush commands of
>> ELS wq, after it has been destroyed (which would lead to a kernel
>> oops).
> 
> Applied to 4.12/scsi-fixes. Thank you!
> 

Thanks Martin!

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-05-18 13:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-17 22:02 [PATCH] lpfc: Fix NULL pointer dereference during PCI error recovery Guilherme G. Piccoli
2017-05-18  0:21 ` Martin K. Petersen
2017-05-18 13:35   ` Guilherme G. Piccoli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox