scsi: lpfc: Fix system crash when port is reset.
The driver panic when using the els_wq during port reset. Check for NULL els_wq before dereferencing. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <james.smart@broadcom.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
845d9e8df2
commit
0c9c6a7514
|
@ -1228,7 +1228,11 @@ lpfc_sli_read_hs(struct lpfc_hba *phba)
|
|||
static inline struct lpfc_sli_ring *
|
||||
lpfc_phba_elsring(struct lpfc_hba *phba)
|
||||
{
|
||||
if (phba->sli_rev == LPFC_SLI_REV4)
|
||||
if (phba->sli_rev == LPFC_SLI_REV4) {
|
||||
if (phba->sli4_hba.els_wq)
|
||||
return phba->sli4_hba.els_wq->pring;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
return &phba->sli.sli3_ring[LPFC_ELS_RING];
|
||||
}
|
||||
|
|
|
@ -693,9 +693,9 @@ lpfc_work_done(struct lpfc_hba *phba)
|
|||
pring = lpfc_phba_elsring(phba);
|
||||
status = (ha_copy & (HA_RXMASK << (4*LPFC_ELS_RING)));
|
||||
status >>= (4*LPFC_ELS_RING);
|
||||
if ((status & HA_RXMASK) ||
|
||||
(pring->flag & LPFC_DEFERRED_RING_EVENT) ||
|
||||
(phba->hba_flag & HBA_SP_QUEUE_EVT)) {
|
||||
if (pring && (status & HA_RXMASK ||
|
||||
pring->flag & LPFC_DEFERRED_RING_EVENT ||
|
||||
phba->hba_flag & HBA_SP_QUEUE_EVT)) {
|
||||
if (pring->flag & LPFC_STOP_IOCB_EVENT) {
|
||||
pring->flag |= LPFC_DEFERRED_RING_EVENT;
|
||||
/* Set the lpfc data pending flag */
|
||||
|
|
Loading…
Reference in New Issue