Hi James and Dick, thanks for this patch. We were investigating a pretty similar issue, and we raised a patch that looks like yours. Since you sent this one, we reviewed and seems it's missing a hunk to prevent the issue we are dealing here, in PCI error recovery. Please see the attached patch. Basically, lpfc is dereferencing a NULL pointer on PCI error recovery path in lpfc_els_flush_cmd(). Feel free to take this hunk on your patch, or if you prefer we can send a complete patch. Thanks in advance, Guilherme --- 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 67827e397431..4e354194cb54 100644 --- a/drivers/scsi/lpfc/lpfc_els.c +++ b/drivers/scsi/lpfc/lpfc_els.c @@ -7441,6 +7441,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