scsi: esas2r: Use flex array destination for memcpy()
authorKees Cook <keescook@chromium.org>
Thu, 1 Sep 2022 20:57:29 +0000 (13:57 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 7 Sep 2022 02:24:37 +0000 (22:24 -0400)
In preparation for FORTIFY_SOURCE performing run-time destination buffer
bounds checking for memcpy(), specify the destination output buffer
explicitly, instead of asking memcpy() to write past the end of what looked
like a fixed-size object. Silences future run-time warning:

  memcpy: detected field-spanning write (size 80) of single field "trc + 1" (size 64)

There is no binary code output differences from this change.

Link: https://lore.kernel.org/r/20220901205729.2260982-1-keescook@chromium.org
Cc: Bradley Grove <linuxdrivers@attotech.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/esas2r/atioctl.h
drivers/scsi/esas2r/esas2r_ioctl.c

index ff2ad9b..dd34374 100644 (file)
@@ -831,6 +831,7 @@ struct __packed atto_hba_trace {
        u32 total_length;
        u32 trace_mask;
        u8 reserved2[48];
+       u8 contents[];
 };
 
 #define ATTO_FUNC_SCSI_PASS_THRU     0x04
index 08f4e43..e003d92 100644 (file)
@@ -947,10 +947,9 @@ static int hba_ioctl_callback(struct esas2r_adapter *a,
                                        break;
                                }
 
-                               memcpy(trc + 1,
+                               memcpy(trc->contents,
                                       a->fw_coredump_buff + offset,
                                       len);
-
                                hi->data_length = len;
                        } else if (trc->trace_func == ATTO_TRC_TF_RESET) {
                                memset(a->fw_coredump_buff, 0,