scsi: lpfc: Fix vport indices in lpfc_find_vport_by_vpid()
authorJames Smart <jsmart2021@gmail.com>
Mon, 1 Mar 2021 17:18:01 +0000 (09:18 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Mar 2021 22:37:03 +0000 (17:37 -0500)
Calls to lpfc_find_vport_by_vpid() for the highest indexed vport fails with
error, "2936 Could not find Vport mapped to vpi XXX".  Our vport indices in
the loop and if-clauses were off by one.

Correct the vpid range used for vpi lookup to include the highest possible
vpid.

Link: https://lore.kernel.org/r/20210301171821.3427-3-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>
drivers/scsi/lpfc/lpfc_hbadisc.c

index 48ca4a6..a60fa3f 100644 (file)
@@ -6081,12 +6081,12 @@ lpfc_find_vport_by_vpid(struct lpfc_hba *phba, uint16_t vpi)
                 * Translate the physical vpi to the logical vpi.  The
                 * vport stores the logical vpi.
                 */
-               for (i = 0; i < phba->max_vpi; i++) {
+               for (i = 0; i <= phba->max_vpi; i++) {
                        if (vpi == phba->vpi_ids[i])
                                break;
                }
 
-               if (i >= phba->max_vpi) {
+               if (i > phba->max_vpi) {
                        lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
                                        "2936 Could not find Vport mapped "
                                        "to vpi %d\n", vpi);