aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJames Smart <james.smart@emulex.com>2013-01-03 15:44:16 -0500
committerJames Bottomley <JBottomley@Parallels.com>2013-01-29 19:39:57 -0500
commit421c66228a168f65494511231265594545c7f1da (patch)
treec84a2cdf41cd7ecbcced1c38d2d7c7c37bc6b6f5 /drivers
parent0a630c2788e87c65d1ac5ff23bbea10a3b1fbc30 (diff)
[SCSI] lpfc 8.3.37: Fixed infinite loop in lpfc_sli4_fcf_rr_next_index_get.
Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/lpfc/lpfc_sli.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index fde41b864384..55b6fc83ad71 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -15556,10 +15556,13 @@ lpfc_sli4_fcf_rr_next_index_get(struct lpfc_hba *phba)
15556{ 15556{
15557 uint16_t next_fcf_index; 15557 uint16_t next_fcf_index;
15558 15558
15559initial_priority:
15559 /* Search start from next bit of currently registered FCF index */ 15560 /* Search start from next bit of currently registered FCF index */
15561 next_fcf_index = phba->fcf.current_rec.fcf_indx;
15562
15560next_priority: 15563next_priority:
15561 next_fcf_index = (phba->fcf.current_rec.fcf_indx + 1) % 15564 /* Determine the next fcf index to check */
15562 LPFC_SLI4_FCF_TBL_INDX_MAX; 15565 next_fcf_index = (next_fcf_index + 1) % LPFC_SLI4_FCF_TBL_INDX_MAX;
15563 next_fcf_index = find_next_bit(phba->fcf.fcf_rr_bmask, 15566 next_fcf_index = find_next_bit(phba->fcf.fcf_rr_bmask,
15564 LPFC_SLI4_FCF_TBL_INDX_MAX, 15567 LPFC_SLI4_FCF_TBL_INDX_MAX,
15565 next_fcf_index); 15568 next_fcf_index);
@@ -15586,7 +15589,7 @@ next_priority:
15586 * at that level and continue the selection process. 15589 * at that level and continue the selection process.
15587 */ 15590 */
15588 if (lpfc_check_next_fcf_pri_level(phba)) 15591 if (lpfc_check_next_fcf_pri_level(phba))
15589 goto next_priority; 15592 goto initial_priority;
15590 lpfc_printf_log(phba, KERN_WARNING, LOG_FIP, 15593 lpfc_printf_log(phba, KERN_WARNING, LOG_FIP,
15591 "2844 No roundrobin failover FCF available\n"); 15594 "2844 No roundrobin failover FCF available\n");
15592 if (next_fcf_index >= LPFC_SLI4_FCF_TBL_INDX_MAX) 15595 if (next_fcf_index >= LPFC_SLI4_FCF_TBL_INDX_MAX)