4.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dick Kennedy <dick.kenn...@broadcom.com>

commit 8e036a9497c5d565baafda4c648f2f372999a547 upstream.

The driver is encountering  oops in lpfc_sli_calc_ring.

The driver is setting hba_wqidx for FCP based on the policy in use for
NVME. The two may not be the same.  Change to set the wqidx based on the
FCP policy.

Signed-off-by: Dick Kennedy <dick.kenn...@broadcom.com>
Signed-off-by: James Smart <james.sm...@broadcom.com>
Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de>
Signed-off-by: Martin K. Petersen <martin.peter...@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 2893d4fb9654..8c37885f4851 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -9396,10 +9396,13 @@ lpfc_sli4_calc_ring(struct lpfc_hba *phba, struct 
lpfc_iocbq *piocb)
                         * for abort iocb hba_wqidx should already
                         * be setup based on what work queue we used.
                         */
-                       if (!(piocb->iocb_flag & LPFC_USE_FCPWQIDX))
+                       if (!(piocb->iocb_flag & LPFC_USE_FCPWQIDX)) {
                                piocb->hba_wqidx =
                                        lpfc_sli4_scmd_to_wqidx_distr(phba,
                                                              piocb->context1);
+                               piocb->hba_wqidx = piocb->hba_wqidx %
+                                       phba->cfg_fcp_io_channel;
+                       }
                        return phba->sli4_hba.fcp_wq[piocb->hba_wqidx]->pring;
                } else {
                        if (unlikely(!phba->sli4_hba.oas_wq))


Reply via email to