From 12df4a4ca03a5dc60c458e4be504417e33aedc87 Mon Sep 17 00:00:00 2001 From: Nilesh Javali Date: Thu, 23 Jul 2026 10:33:53 +0530 Subject: [PATCH] scsi: qla2xxx: Add build-time size check for VP config IOCB layout Add a BUILD_BUG_ON for struct vp_config_entry_24xx_ext to verify its 128-byte size at compile time alongside the existing 64-byte check for struct vp_config_entry_24xx. Document in qla24xx_modify_vp_config() that the ext variant overlays the base 24xx layout for the first 64 bytes (all fields this helper reads and writes), so the IOCB can be built through a single struct vp_config_entry_24xx pointer regardless of the adapter's IOCB stride. Signed-off-by: Nilesh Javali Reviewed-by: Hannes Reinecke Link: https://patch.msgid.link/20260723050413.3897522-37-njavali@marvell.com Signed-off-by: Martin K. Petersen (Oracle) --- drivers/scsi/qla2xxx/qla_mbx.c | 8 +++++++- drivers/scsi/qla2xxx/qla_os.c | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c index 0d7aa6fce007..3ebda35dd584 100644 --- a/drivers/scsi/qla2xxx/qla_mbx.c +++ b/drivers/scsi/qla2xxx/qla_mbx.c @@ -4364,6 +4364,13 @@ qla24xx_modify_vp_config(scsi_qla_host_t *vha) return QLA_MEMORY_ALLOC_FAILED; } + /* + * vp_config_entry_24xx_ext overlays vp_config_entry_24xx for the + * full 64-byte 24xx layout (the ext variant merely appends fields + * at offset 64+ which this helper never touches), so the IOCB is + * built and inspected through a single struct vp_config_entry_24xx + * pointer regardless of adapter stride. + */ vpmod->entry_type = VP_CONFIG_IOCB_TYPE; vpmod->entry_count = 1; vpmod->command = VCT_COMMAND_MOD_ENABLE_VPS; @@ -4392,7 +4399,6 @@ qla24xx_modify_vp_config(scsi_qla_host_t *vha) le16_to_cpu(vpmod->comp_status)); rval = QLA_FUNCTION_FAILED; } else { - /* EMPTY */ ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x10c0, "Done %s.\n", __func__); fc_vport_set_state(vha->fc_vport, FC_VPORT_INITIALIZING); diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index ad070c0bf7db..8e5d49abead4 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -8436,6 +8436,7 @@ qla2x00_module_init(void) BUILD_BUG_ON(sizeof(struct verify_chip_rsp_84xx) != 52); BUILD_BUG_ON(sizeof(struct vf_evfp_entry_24xx) != 56); BUILD_BUG_ON(sizeof(struct vp_config_entry_24xx) != 64); + BUILD_BUG_ON(sizeof(struct vp_config_entry_24xx_ext) != 128); BUILD_BUG_ON(sizeof(struct vp_ctrl_entry_24xx) != 64); BUILD_BUG_ON(sizeof(struct vp_ctrl_entry_24xx_ext) != 128); BUILD_BUG_ON(sizeof(struct vp_rpt_id_entry_24xx) != 64);