Message ID | 5671efb8.g2wO8LGtpHquAYxc%james.smart@avagotech.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On 12/17/2015 12:11 AM, James Smart wrote: > > Fix FCF Infinite loop in lpfc_sli4_fcf_rr_next_index_get. > > Signed-off-by: Dick Kennedy <dick.kennedy@avagotech.com> > Signed-off-by: James Smart <james.smart@avagotech.com> > --- > drivers/scsi/lpfc/lpfc_sli.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c > index f9585cd..6aae828 100644 > --- a/drivers/scsi/lpfc/lpfc_sli.c > +++ b/drivers/scsi/lpfc/lpfc_sli.c > @@ -16173,7 +16173,7 @@ fail_fcf_read: > } > > /** > - * lpfc_check_next_fcf_pri > + * lpfc_check_next_fcf_pri_level > * phba pointer to the lpfc_hba struct for this port. > * This routine is called from the lpfc_sli4_fcf_rr_next_index_get > * routine when the rr_bmask is empty. The FCF indecies are put into the > @@ -16329,8 +16329,12 @@ next_priority: > > if (next_fcf_index < LPFC_SLI4_FCF_TBL_INDX_MAX && > phba->fcf.fcf_pri[next_fcf_index].fcf_rec.flag & > - LPFC_FCF_FLOGI_FAILED) > + LPFC_FCF_FLOGI_FAILED) { > + if (list_is_singular(&phba->fcf.fcf_pri_list)) > + return LPFC_FCOE_FCF_NEXT_NONE; > + > goto next_priority; > + } > > lpfc_printf_log(phba, KERN_INFO, LOG_FIP, > "2845 Get next roundrobin failover FCF (x%x)\n", > Hehe. I think I've hit that one once. Reviewed-by: Hannes Reinecke <hare@suse.com> Cheers, Hannes
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index f9585cd..6aae828 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c @@ -16173,7 +16173,7 @@ fail_fcf_read: } /** - * lpfc_check_next_fcf_pri + * lpfc_check_next_fcf_pri_level * phba pointer to the lpfc_hba struct for this port. * This routine is called from the lpfc_sli4_fcf_rr_next_index_get * routine when the rr_bmask is empty. The FCF indecies are put into the @@ -16329,8 +16329,12 @@ next_priority: if (next_fcf_index < LPFC_SLI4_FCF_TBL_INDX_MAX && phba->fcf.fcf_pri[next_fcf_index].fcf_rec.flag & - LPFC_FCF_FLOGI_FAILED) + LPFC_FCF_FLOGI_FAILED) { + if (list_is_singular(&phba->fcf.fcf_pri_list)) + return LPFC_FCOE_FCF_NEXT_NONE; + goto next_priority; + } lpfc_printf_log(phba, KERN_INFO, LOG_FIP, "2845 Get next roundrobin failover FCF (x%x)\n",