Re: [PATCH] scsi: scsi_transport_fc: Adjust struct fc_nl_event flex array usage

From: James Smart
Date: Thu Sep 22 2022 - 18:24:30 EST


On 9/21/2022 1:51 PM, Kees Cook wrote:
In order to help the compiler reason about the destination buffer in
struct fc_nl_event, add a flexible array member for this purpose.
However, since the header is UAPI, it must not change size or layout, so
a union is used.

The allocation size calculations are also corrected (it was potentially
allocating an extra 8 bytes), and the padding is zeroed to avoid leaking
kernel heap memory contents.

Detected at run-time by the recently added memcpy() bounds checking:

memcpy: detected field-spanning write (size 8) of single field "&event->event_data" at drivers/scsi/scsi_transport_fc.c:581 (size 4)

Reported-by: Sachin Sant <sachinp@xxxxxxxxxxxxx>
Link: https://lore.kernel.org/linux-next/42404B5E-198B-4FD3-94D6-5E16CF579EF3@xxxxxxxxxxxxx/
Cc: "James E.J. Bottomley" <jejb@xxxxxxxxxxxxx>
Cc: "Martin K. Petersen" <martin.petersen@xxxxxxxxxx>
Cc: linux-scsi@xxxxxxxxxxxxxxx
Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx>
---

Kinda crazy way to resolve it, but looks fine.

Reviewed-by: James Smart <jsmart2021@xxxxxxxxx>

-- james