On Wed, 2021-01-27 at 14:16 -0800, James Smart wrote: > In testing, in a configuration with Redfish and native nvme multipath > when an EEH is injected, a kernel oops is being encountered: > (unreliable) > lpfc_nvme_ls_req+0x328/0x720 [lpfc] > __nvme_fc_send_ls_req.constprop.13+0x1d8/0x3d0 [nvme_fc] > nvme_fc_create_association+0x224/0xd10 [nvme_fc] > nvme_fc_reset_ctrl_work+0x110/0x154 [nvme_fc] > process_one_work+0x304/0x5d > > the nvme transport is issuing a Disconnect LS request, which the > driver > receives and tries to post but the work queue used by the driver is > already being torn down by the eeh. > > Fix by validating the validity of the work queue before proceeding > with > the LS transmit. > > Signed-off-by: James Smart <jsmart2021@xxxxxxxxx> > --- > drivers/scsi/lpfc/lpfc_nvme.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/scsi/lpfc/lpfc_nvme.c > b/drivers/scsi/lpfc/lpfc_nvme.c > index 5e990f4c1ca6..4d819e52496a 100644 > --- a/drivers/scsi/lpfc/lpfc_nvme.c > +++ b/drivers/scsi/lpfc/lpfc_nvme.c > @@ -559,6 +559,9 @@ __lpfc_nvme_ls_req(struct lpfc_vport *vport, > struct lpfc_nodelist *ndlp, > return -ENODEV; > } > > + if (!vport->phba->sli4_hba.nvmels_wq) > + return -ENOMEM; > + > /* > * there are two dma buf in the request, actually there is one > and > * the second one is just the start address + cmd size. Reviewed-by: Ewan D. Milne <emilne@xxxxxxxxxx>