]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
scsi: lpfc: Correct LCB ACCept payload
authorJames Smart <jsmart2021@gmail.com>
Wed, 1 Aug 2018 00:23:23 +0000 (17:23 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 2 Aug 2018 19:45:19 +0000 (15:45 -0400)
After memory allocation for the LCB response frame, the memory wasn't zero
initialized, and not all fields are set. Thus garbage shows up in the
payload.

Fix by zeroing the memory at allocation.  Also properly set the Capability
field based on duration support.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_els.c

index df655f1284d04d4e4f11fc03ea37a901ca79cfe9..4dda969e947cc33036e81de54b3f6a7c2277f4f9 100644 (file)
@@ -5662,6 +5662,7 @@ lpfc_els_lcb_rsp(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        lcb_res = (struct fc_lcb_res_frame *)
                (((struct lpfc_dmabuf *)elsiocb->context2)->virt);
 
+       memset(lcb_res, 0, sizeof(struct fc_lcb_res_frame));
        icmd = &elsiocb->iocb;
        icmd->ulpContext = lcb_context->rx_id;
        icmd->unsli3.rcvsli3.ox_id = lcb_context->ox_id;
@@ -5670,6 +5671,7 @@ lpfc_els_lcb_rsp(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
        *((uint32_t *)(pcmd)) = ELS_CMD_ACC;
        lcb_res->lcb_sub_command = lcb_context->sub_command;
        lcb_res->lcb_type = lcb_context->type;
+       lcb_res->capability = lcb_context->capability;
        lcb_res->lcb_frequency = lcb_context->frequency;
        lcb_res->lcb_duration = lcb_context->duration;
        elsiocb->iocb_cmpl = lpfc_cmpl_els_rsp;