Commit 6f0a92fd authored by Gustavo A. R. Silva's avatar Gustavo A. R. Silva Committed by Martin K. Petersen
Browse files

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

One-element arrays are deprecated, and we are replacing them with flexible
array members instead. So, replace one-element arrays with flexible-array
members in a couple of structures, and refactor the rest of the code,
accordingly.

This helps with the ongoing efforts to tighten the FORTIFY_SOURCE routines
on memcpy().

This results in no differences in binary output.

Link: https://github.com/KSPP/linux/issues/79
Link: https://github.com/KSPP/linux/issues/204


Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/ZJNdKDkuRbFZpASS@work


Reviewed-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 4b2e2875
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -982,12 +982,12 @@ struct report_phys_lun_16byte_wwid {

struct report_phys_lun_8byte_wwid_list {
	struct report_lun_header header;
	struct report_phys_lun_8byte_wwid lun_entries[1];
	struct report_phys_lun_8byte_wwid lun_entries[];
};

struct report_phys_lun_16byte_wwid_list {
	struct report_lun_header header;
	struct report_phys_lun_16byte_wwid lun_entries[1];
	struct report_phys_lun_16byte_wwid lun_entries[];
};

struct raid_map_disk_data {
+2 −3
Original line number Diff line number Diff line
@@ -1203,7 +1203,6 @@ static inline int pqi_report_phys_luns(struct pqi_ctrl_info *ctrl_info, void **b
	unsigned int i;
	u8 rpl_response_format;
	u32 num_physicals;
	size_t rpl_16byte_wwid_list_length;
	void *rpl_list;
	struct report_lun_header *rpl_header;
	struct report_phys_lun_8byte_wwid_list *rpl_8byte_wwid_list;
@@ -1232,9 +1231,9 @@ static inline int pqi_report_phys_luns(struct pqi_ctrl_info *ctrl_info, void **b

	rpl_8byte_wwid_list = rpl_list;
	num_physicals = get_unaligned_be32(&rpl_8byte_wwid_list->header.list_length) / sizeof(rpl_8byte_wwid_list->lun_entries[0]);
	rpl_16byte_wwid_list_length = sizeof(struct report_lun_header) + (num_physicals * sizeof(struct report_phys_lun_16byte_wwid));

	rpl_16byte_wwid_list = kmalloc(rpl_16byte_wwid_list_length, GFP_KERNEL);
	rpl_16byte_wwid_list = kmalloc(struct_size(rpl_16byte_wwid_list, lun_entries,
						   num_physicals), GFP_KERNEL);
	if (!rpl_16byte_wwid_list)
		return -ENOMEM;