Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi: mpi3mr: Replace 1-element array with flex-array

Nothing else defined MPI3_NVME_ENCAP_CMD_MAX, so the "command" buffer was
being defined as a fake flexible array of size 1. Replace this with a
proper flex array. Avoids this GCC 13 warning under -fstrict-flex-arrays=3:

In function 'fortify_memset_chk',
inlined from 'mpi3mr_build_nvme_sgl' at ../drivers/scsi/mpi3mr/mpi3mr_app.c:693:2,
inlined from 'mpi3mr_bsg_process_mpt_cmds.constprop' at ../drivers/scsi/mpi3mr/mpi3mr_app.c:1214:8:
../include/linux/fortify-string.h:430:25: warning: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Wattribute-warning]
430 | __write_overflow_field(p_size_field, size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Link: https://lore.kernel.org/r/20230204183715.never.937-kees@kernel.org
Cc: Sumit Saxena <sumit.saxena@broadcom.com>
Cc: Himanshu Madhani <himanshu.madhani@oracle.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: kernel test robot <lkp@intel.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Kees Cook and committed by
Martin K. Petersen
c6f2e6b6 ee4e7dfe

+1 -7
+1 -7
include/uapi/scsi/scsi_bsg_mpi3mr.h
··· 455 455 } cmd; 456 456 }; 457 457 458 - 459 - /* MPI3: NVMe Encasulation related definitions */ 460 - #ifndef MPI3_NVME_ENCAP_CMD_MAX 461 - #define MPI3_NVME_ENCAP_CMD_MAX (1) 462 - #endif 463 - 464 458 struct mpi3_nvme_encapsulated_request { 465 459 __le16 host_tag; 466 460 __u8 ioc_use_only02; ··· 468 474 __le16 flags; 469 475 __le32 data_length; 470 476 __le32 reserved14[3]; 471 - __le32 command[MPI3_NVME_ENCAP_CMD_MAX]; 477 + __le32 command[]; 472 478 }; 473 479 474 480 struct mpi3_nvme_encapsulated_error_reply {