Re: [PATCH] scsi: qla2xxx: Fix flex array member not at end

From: Kees Cook

Date: Wed Jul 15 2026 - 12:22:01 EST


On Tue, Jul 14, 2026 at 11:22:38AM -0400, Jesse Taube wrote:
> In qla_edif_bsg.h: `struct fc_bsg_reply` and `struct fc_bsg_request`
> have flexible array members, thus they must be the last member of
> the parent structure. Contininging in the effort to add
> `-Wflex-array-member-not-at-end`, move the structs to the end of
> the parent structures, `struct qla_bsg_auth_els_reply` and
> `struct qla_bsg_auth_els_request `.
>
> Suggested-by: John Meneghini <jmeneghi@xxxxxxxxxx>
> Signed-off-by: Jesse Taube <jtaubepe@xxxxxxxxxx>

It feels like this structure is part of the hardware spec? (and therefore
cannot be re-ordered.) I'm not sure at all, though, but it looks like
it's part of request serialization:

$ git grep 'qla_bsg_auth_els_request' | grep '>request'
drivers/scsi/qla2xxx/qla_edif.c: (struct qla_bsg_auth_els_request *)bsg_job->request;
drivers/scsi/qla2xxx/qla_edif.c: (struct qla_bsg_auth_els_request *)bsg_job->request;
drivers/scsi/qla2xxx/qla_edif.c: (struct qla_bsg_auth_els_request *)bsg_job->request;
drivers/scsi/qla2xxx/qla_isr.c: (struct qla_bsg_auth_els_request *)bsg_job->request;

-Kees

> ---
> drivers/scsi/qla2xxx/qla_edif_bsg.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/qla2xxx/qla_edif_bsg.h b/drivers/scsi/qla2xxx/qla_edif_bsg.h
> index 514c265ba86e..bcc35d149c1f 100644
> --- a/drivers/scsi/qla2xxx/qla_edif_bsg.h
> +++ b/drivers/scsi/qla2xxx/qla_edif_bsg.h
> @@ -36,16 +36,16 @@ struct extra_auth_els {
> } __packed;
>
> struct qla_bsg_auth_els_request {
> - struct fc_bsg_request r;
> struct extra_auth_els e;
> + struct fc_bsg_request r;
> };
>
> struct qla_bsg_auth_els_reply {
> - struct fc_bsg_reply r;
> uint32_t rx_xchg_address;
> uint8_t version;
> uint8_t pad[VND_CMD_PAD_SIZE];
> uint8_t reserved[VND_CMD_APP_RESERVED_SIZE];
> + struct fc_bsg_reply r;
> };
>
> struct app_id {
> --
> 2.54.0
>

--
Kees Cook