scsi: lpfc: Fix DMA virtual address ptr assignment in bsg
authorJames Smart <jsmart2021@gmail.com>
Wed, 21 Apr 2021 23:44:48 +0000 (16:44 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 27 Apr 2021 02:57:27 +0000 (22:57 -0400)
lpfc_bsg_ct_unsol_event() routine acts assigns a ct_request to the wrong
structure address, resulting in a bad address that results in bsg related
timeouts.

Correct the ct_request assignment to use the kernel virtual buffer address
(not the control structure address).

Link: https://lore.kernel.org/r/20210421234448.102132-1-jsmart2021@gmail.com
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_bsg.c

index c2776b8..38cfe1b 100644 (file)
@@ -934,7 +934,7 @@ lpfc_bsg_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
        INIT_LIST_HEAD(&head);
        list_add_tail(&head, &piocbq->list);
 
-       ct_req = (struct lpfc_sli_ct_request *)bdeBuf1;
+       ct_req = (struct lpfc_sli_ct_request *)bdeBuf1->virt;
        evt_req_id = ct_req->FsType;
        cmd = ct_req->CommandResponse.bits.CmdRsp;