diff options
author | James Smart <james.smart@emulex.com> | 2013-01-03 15:44:16 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2013-01-29 19:39:57 -0500 |
commit | 421c66228a168f65494511231265594545c7f1da (patch) | |
tree | c84a2cdf41cd7ecbcced1c38d2d7c7c37bc6b6f5 /drivers | |
parent | 0a630c2788e87c65d1ac5ff23bbea10a3b1fbc30 (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.c | 9 |
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 | ||
15559 | initial_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 | |||
15560 | next_priority: | 15563 | next_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) |