scsi: lpfc: fix 12.4.0.0 GPF at boot
authorJames Smart <jsmart2021@gmail.com>
Wed, 28 Aug 2019 23:19:11 +0000 (16:19 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 29 Aug 2019 22:15:07 +0000 (18:15 -0400)
The 12.4.0.0 patch that merged WQ/CQ pairs into single per-cpu pair
contained a bug: a local variable was set to the queue pair by index.  This
should have allowed the local variable to be natively used.  Instead, the
code reused the index relative to the local variable, obtaining a random
pointer value that when used eventually faulted the system

Convert offending code to use local variable.

Fixes: c00f62e6c546 ("scsi: lpfc: Merge per-protocol WQ/CQ pairs into single per-cpu pair")
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Tested-by: Abdul Haleem <abdhalee@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c

index 0dfd30aa4d992da556668ea52f22740a12338902..bb5705267c395ee641b499abdfe5130f30b1f1a3 100644 (file)
@@ -5553,7 +5553,7 @@ lpfc_sli4_arm_cqeq_intr(struct lpfc_hba *phba)
                for (qidx = 0; qidx < phba->cfg_hdw_queue; qidx++) {
                        qp = &sli4_hba->hdwq[qidx];
                        /* ARM the corresponding CQ */
-                       sli4_hba->sli4_write_cq_db(phba, qp[qidx].io_cq, 0,
+                       sli4_hba->sli4_write_cq_db(phba, qp->io_cq, 0,
                                                LPFC_QUEUE_REARM);
                }