Commit f5ace5ef authored by Gustavo A. R. Silva's avatar Gustavo A. R. Silva Committed by Jens Axboe
Browse files

block: scsi_ioctl: Avoid the use of one-element arrays

One-element arrays are being deprecated[1]. Replace the one-element array
with a simple object of type compat_caddr_t: 'compat_caddr_t unused'[2],
once it seems this field is actually never used.

Also, update struct cdrom_generic_command in UAPI by adding an
anonimous union to avoid using the one-element array _reserved_.

[1] https://www.kernel.org/doc/html/v5.9-rc1/process/deprecated.html#zero-length-and-one-element-arrays
[2] https://github.com/KSPP/linux/issues/86



Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/lkml/5f76f5d0.qJ4t%2FHWuRzSW7bTa%25lkp@intel.com/


Build-tested-by: default avatarkernel test robot <lkp@intel.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 99ba84c5
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -651,7 +651,7 @@ struct compat_cdrom_generic_command {
	unsigned char	data_direction;
	compat_int_t	quiet;
	compat_int_t	timeout;
	compat_caddr_t	reserved[1];
	compat_caddr_t	unused;
};
#endif

@@ -673,7 +673,7 @@ static int scsi_get_cdrom_generic_arg(struct cdrom_generic_command *cgc,
			.data_direction	= cgc32.data_direction,
			.quiet		= cgc32.quiet,
			.timeout	= cgc32.timeout,
			.reserved[0]	= compat_ptr(cgc32.reserved[0]),
			.unused		= compat_ptr(cgc32.unused),
		};
		memcpy(&cgc->cmd, &cgc32.cmd, CDROM_PACKET_SIZE);
		return 0;
@@ -698,7 +698,7 @@ static int scsi_put_cdrom_generic_arg(const struct cdrom_generic_command *cgc,
			.data_direction	= cgc->data_direction,
			.quiet		= cgc->quiet,
			.timeout	= cgc->timeout,
			.reserved[0]	= (uintptr_t)(cgc->reserved[0]),
			.unused		= (uintptr_t)(cgc->unused),
		};
		memcpy(&cgc32.cmd, &cgc->cmd, CDROM_PACKET_SIZE);

+4 −1
Original line number Diff line number Diff line
@@ -289,7 +289,10 @@ struct cdrom_generic_command
	unsigned char		data_direction;
	int			quiet;
	int			timeout;
	union {
		void		__user *reserved[1];	/* unused, actually */
		void            __user *unused;
	};
};

/*