scsi: libfc: Replace one-element arrays with flexible-array members

Use flexible-array members in struct fc_fdmi_attr_entry and fs_fdmi_attrs
instead of one-element arrays, and refactor the code accordingly.

Also, this helps with the ongoing efforts to globally enable -Warray-bounds
and get us closer to being able to tighten the FORTIFY_SOURCE routines on
memcpy().

https://github.com/KSPP/linux/issues/79
https://github.com/ClangBuiltLinux/linux/issues/1590

Link: https://lore.kernel.org/r/20220214223903.GA859464@embeddedor
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Gustavo A. R. Silva 2022-02-14 16:39:03 -06:00 committed by Martin K. Petersen
parent b709a4caa9
commit c5b483d5c1
2 changed files with 3 additions and 3 deletions

View File

@ -246,7 +246,7 @@ static inline int fc_ct_ms_fill(struct fc_lport *lport,
&entry->type); &entry->type);
put_unaligned_be16(len, &entry->len); put_unaligned_be16(len, &entry->len);
put_unaligned_be64(lport->wwnn, put_unaligned_be64(lport->wwnn,
(__be64 *)&entry->value[0]); (__be64 *)&entry->value);
/* Manufacturer */ /* Manufacturer */
entry = (struct fc_fdmi_attr_entry *)((char *)entry->value + entry = (struct fc_fdmi_attr_entry *)((char *)entry->value +

View File

@ -158,7 +158,7 @@ struct fc_fdmi_port_name {
struct fc_fdmi_attr_entry { struct fc_fdmi_attr_entry {
__be16 type; __be16 type;
__be16 len; __be16 len;
__u8 value[1]; __u8 value[];
} __attribute__((__packed__)); } __attribute__((__packed__));
/* /*
@ -166,7 +166,7 @@ struct fc_fdmi_attr_entry {
*/ */
struct fs_fdmi_attrs { struct fs_fdmi_attrs {
__be32 numattrs; __be32 numattrs;
struct fc_fdmi_attr_entry attr[1]; struct fc_fdmi_attr_entry attr[];
} __attribute__((__packed__)); } __attribute__((__packed__));
/* /*