]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
scsi: lpfc: Fix incorrect request len mbox field when setting trunking via sysfs
authorJustin Tee <justin.tee@broadcom.com>
Fri, 28 Jun 2024 17:20:09 +0000 (10:20 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 5 Jul 2024 03:24:51 +0000 (23:24 -0400)
When setting trunk modes through sysfs, the SLI_CONFIG mailbox command's
command payload length is incorrectly hardcoded to 12 bytes.  SLI_CONFIG's
payload length field should be specified large enough to encompass both the
submailbox command header and the submailbox request itself.

Thus, replace the hardcoded 12 bytes with a clearer calculation by way of
sizeof(struct lpfc_mbx_set_trunk_mode) - sizeof(struct lpfc_sli4_cfg_mhdr).

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20240628172011.25921-7-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_attr.c

index a46c73e8d7c409d9edaa9a82838244b9390b811f..62e517719e8ff76447667be94597af380ec1e733 100644 (file)
@@ -1831,6 +1831,7 @@ static int
 lpfc_set_trunking(struct lpfc_hba *phba, char *buff_out)
 {
        LPFC_MBOXQ_t *mbox = NULL;
+       u32 payload_len;
        unsigned long val = 0;
        char *pval = NULL;
        int rc = 0;
@@ -1869,9 +1870,11 @@ lpfc_set_trunking(struct lpfc_hba *phba, char *buff_out)
        if (!mbox)
                return -ENOMEM;
 
+       payload_len = sizeof(struct lpfc_mbx_set_trunk_mode) -
+                     sizeof(struct lpfc_sli4_cfg_mhdr);
        lpfc_sli4_config(phba, mbox, LPFC_MBOX_SUBSYSTEM_FCOE,
                         LPFC_MBOX_OPCODE_FCOE_FC_SET_TRUNK_MODE,
-                        12, LPFC_SLI4_MBX_EMBED);
+                        payload_len, LPFC_SLI4_MBX_EMBED);
 
        bf_set(lpfc_mbx_set_trunk_mode,
               &mbox->u.mqe.un.set_trunk_mode,