scsi: mpt3sas: Replace unnecessary dynamic allocation with a static one
authorGustavo A. R. Silva <gustavoars@kernel.org>
Wed, 10 Mar 2021 23:59:51 +0000 (17:59 -0600)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 17 Mar 2021 04:04:40 +0000 (00:04 -0400)
commita1c4d7741323eff1d9c5baca8337ac3ac4630649
tree918c3f53bc6f606cac82b552656cc6709192a178
parentb2c57925df1ffc9c930629a39c1680035f735ffb
scsi: mpt3sas: Replace unnecessary dynamic allocation with a static one

Dynamic memory allocation isn't actually needed and it can be replaced by
statically allocating memory for struct object io_unit_pg3 with 36
hardcoded entries for its GPIOVal array.

Also, this helps the with ongoing efforts to enable -Warray-bounds by
fixing the following warning:

drivers/scsi/mpt3sas/mpt3sas_ctl.c: In function ‘BRM_status_show’:
drivers/scsi/mpt3sas/mpt3sas_ctl.c:3257:63: warning: array subscript 24 is above array bounds of ‘U16[1]’ {aka ‘short unsigned int[1]’} [-Warray-bounds]
 3257 |  backup_rail_monitor_status = le16_to_cpu(io_unit_pg3->GPIOVal[24]);
./include/uapi/linux/byteorder/little_endian.h:36:51: note: in definition of macro ‘__le16_to_cpu’
   36 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
      |                                                   ^
drivers/scsi/mpt3sas/mpt3sas_ctl.c:3257:31: note: in expansion of macro ‘le16_to_cpu’
 3257 |  backup_rail_monitor_status = le16_to_cpu(io_unit_pg3->GPIOVal[24]);

Link: https://github.com/KSPP/linux/issues/109
Link: https://lore.kernel.org/lkml/202103101058.16ED27BE3@keescook/
Link: https://lore.kernel.org/r/20210310235951.GA108661@embeddedor
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mpt3sas/mpi/mpi2_cnfg.h
drivers/scsi/mpt3sas/mpt3sas_ctl.c