mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
scsi: sd: Remove the stream_status member from scsi_stream_status_header
Having a variable length array at the end of scsi_stream_status_header only causes problems. Remove it and switch sd_is_perm_stream(), which is the only place that currently uses it, to use the scsi_stream_status directly following it in the local buf structure. Besides being a much better data structure design, this also avoids a -Wflex-array-member-not-at-end warning. Reported-by: Gustavo A. R. Silva <gustavoars@kernel.org> Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20250505060640.3398500-1-hch@lst.de Reviewed-by: John Garry <john.g.garry@oracle.com> Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
73349697fd
commit
cd6856d388
@@ -3215,7 +3215,7 @@ static bool sd_is_perm_stream(struct scsi_disk *sdkp, unsigned int stream_id)
|
||||
return false;
|
||||
if (get_unaligned_be32(&buf.h.len) < sizeof(struct scsi_stream_status))
|
||||
return false;
|
||||
return buf.h.stream_status[0].perm;
|
||||
return buf.s.perm;
|
||||
}
|
||||
|
||||
static void sd_read_io_hints(struct scsi_disk *sdkp, unsigned char *buffer)
|
||||
|
||||
@@ -346,10 +346,9 @@ static_assert(sizeof(struct scsi_stream_status) == 8);
|
||||
|
||||
/* GET STREAM STATUS parameter data */
|
||||
struct scsi_stream_status_header {
|
||||
__be32 len; /* length in bytes of stream_status[] array. */
|
||||
__be32 len; /* length in bytes of following payload */
|
||||
u16 reserved;
|
||||
__be16 number_of_open_streams;
|
||||
DECLARE_FLEX_ARRAY(struct scsi_stream_status, stream_status);
|
||||
};
|
||||
|
||||
static_assert(sizeof(struct scsi_stream_status_header) == 8);
|
||||
|
||||
Reference in New Issue
Block a user