scsi: lpfc: Fix crash caused by switch reboot
Driver is causing a crash in __lpfc_sli_release_iocbq_s4() when it dereferences the els_wq which is NULL. Validate the pring for the els_wq before dereferencing. Reorg the code to move the pring assignment closer to where it is actually used. Link: https://lore.kernel.org/r/20210301171821.3427-18-jsmart2021@gmail.com Co-developed-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
debbc1e2b9
Коммит
9628aace0d
|
@ -1403,7 +1403,6 @@ __lpfc_sli_release_iocbq_s4(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
|
|||
goto out;
|
||||
}
|
||||
|
||||
pring = phba->sli4_hba.els_wq->pring;
|
||||
if ((iocbq->iocb_flag & LPFC_EXCHANGE_BUSY) &&
|
||||
(sglq->state != SGL_XRI_ABORTED)) {
|
||||
spin_lock_irqsave(&phba->sli4_hba.sgl_list_lock,
|
||||
|
@ -1426,9 +1425,9 @@ __lpfc_sli_release_iocbq_s4(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
|
|||
&phba->sli4_hba.lpfc_els_sgl_list);
|
||||
spin_unlock_irqrestore(
|
||||
&phba->sli4_hba.sgl_list_lock, iflag);
|
||||
|
||||
pring = lpfc_phba_elsring(phba);
|
||||
/* Check if TXQ queue needs to be serviced */
|
||||
if (!list_empty(&pring->txq))
|
||||
if (pring && (!list_empty(&pring->txq)))
|
||||
lpfc_worker_wake_up(phba);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче