scsi: ibmvscsis: Silence -Warray-bounds warning
authorKees Cook <keescook@chromium.org>
Tue, 8 Feb 2022 06:07:09 +0000 (22:07 -0800)
committerKees Cook <keescook@chromium.org>
Mon, 14 Feb 2022 00:48:24 +0000 (16:48 -0800)
commit87f02d058380a193e1565e653ec295eb5d53c1c3
tree9d93e3a3dac0ec18f447c0869956219952da7f78
parent10bec4fcf4ad64f9651d900cc821684c1fc17f30
scsi: ibmvscsis: Silence -Warray-bounds warning

Instead of doing a cast to storage that is too small, add a union for
the high 64 bits. Silences the warnings under -Warray-bounds:

drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c: In function 'ibmvscsis_send_messages':
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c:1934:44: error: array subscript 'struct viosrp_crq[0]' is partly outside array bounds of 'u64[1]' {aka 'long long unsigned int[1]'} [-Werror=array-bounds]
 1934 |                                         crq->valid = VALID_CMD_RESP_EL;
      |                                            ^~
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c:1875:13: note: while referencing 'msg_hi'
 1875 |         u64 msg_hi = 0;
      |             ^~~~~~

There is no change to the resulting binary instructions.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Link: https://lore.kernel.org/lkml/20220125142430.75c3160e@canb.auug.org.au
Cc: Michael Cyr <mikecyr@linux.ibm.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Tyrel Datwyler <tyreld@linux.ibm.com>
Cc: linux-scsi@vger.kernel.org
Cc: target-devel@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com>
Link: https://lore.kernel.org/lkml/53b3e9c5-23c1-3825-8286-b4a65b69067b@linux.ibm.com
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c
include/scsi/viosrp.h