Message ID | 20200426130728.63399-2-efremov@linux.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | floppy: suppress UBSAN warning in setup_rw_floppy() | expand |
On Sun, 2020-04-26 at 16:07 +0300, Denis Efremov wrote: > Use FD_AUTODETECT_SIZE for autodetect buffer size in struct > floppy_drive_params instead of a magic number. trivia: > diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c [] > @@ -2076,7 +2076,8 @@ static int next_valid_format(int drive) > > probed_format = drive_state[drive].probed_format; > while (1) { > - if (probed_format >= 8 || !drive_params[drive].autodetect[probed_format]) { > + if (probed_format >= FD_AUTODETECT_SIZE || > + !drive_params[drive].autodetect[probed_format]) { floppy.c almost exclusively uses multi-line statement alignment to open parenthesis. It'd be nicer to keep using that style. > drive_state[drive].probed_format = 0; > return 1; > } > @@ -3445,13 +3446,13 @@ static int fd_getgeo(struct block_device *bdev, struct hd_geometry *geo) > return 0; > } > > -static bool valid_floppy_drive_params(const short autodetect[8], > +static bool valid_floppy_drive_params(const short autodetect[FD_AUTODETECT_SIZE], > int native_format) >
On Sun, Apr 26, 2020 at 04:07:26PM +0300, Denis Efremov wrote: > Use FD_AUTODETECT_SIZE for autodetect buffer size in struct > floppy_drive_params instead of a magic number. > > Signed-off-by: Denis Efremov <efremov@linux.com> > --- > drivers/block/floppy.c | 9 +++++---- > include/uapi/linux/fd.h | 5 ++++- > 2 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c > index 2817170dd403..ac2023c757e3 100644 > --- a/drivers/block/floppy.c > +++ b/drivers/block/floppy.c > @@ -2076,7 +2076,8 @@ static int next_valid_format(int drive) > > probed_format = drive_state[drive].probed_format; > while (1) { > - if (probed_format >= 8 || !drive_params[drive].autodetect[probed_format]) { > + if (probed_format >= FD_AUTODETECT_SIZE || > + !drive_params[drive].autodetect[probed_format]) { > drive_state[drive].probed_format = 0; > return 1; > } > @@ -3445,13 +3446,13 @@ static int fd_getgeo(struct block_device *bdev, struct hd_geometry *geo) > return 0; > } > > -static bool valid_floppy_drive_params(const short autodetect[8], > +static bool valid_floppy_drive_params(const short autodetect[FD_AUTODETECT_SIZE], This adds an > 80 char line. But then again passing array sizes to functions is a bit pointless ayway. Otherwise this looks fine to me.
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 2817170dd403..ac2023c757e3 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -2076,7 +2076,8 @@ static int next_valid_format(int drive) probed_format = drive_state[drive].probed_format; while (1) { - if (probed_format >= 8 || !drive_params[drive].autodetect[probed_format]) { + if (probed_format >= FD_AUTODETECT_SIZE || + !drive_params[drive].autodetect[probed_format]) { drive_state[drive].probed_format = 0; return 1; } @@ -3445,13 +3446,13 @@ static int fd_getgeo(struct block_device *bdev, struct hd_geometry *geo) return 0; } -static bool valid_floppy_drive_params(const short autodetect[8], +static bool valid_floppy_drive_params(const short autodetect[FD_AUTODETECT_SIZE], int native_format) { size_t floppy_type_size = ARRAY_SIZE(floppy_type); size_t i = 0; - for (i = 0; i < 8; ++i) { + for (i = 0; i < FD_AUTODETECT_SIZE; ++i) { if (autodetect[i] < 0 || autodetect[i] >= floppy_type_size) return false; @@ -3676,7 +3677,7 @@ struct compat_floppy_drive_params { struct floppy_max_errors max_errors; char flags; char read_track; - short autodetect[8]; + short autodetect[FD_AUTODETECT_SIZE]; compat_int_t checkfreq; compat_int_t native_format; }; diff --git a/include/uapi/linux/fd.h b/include/uapi/linux/fd.h index 90fb94712c41..3f6b7be4c096 100644 --- a/include/uapi/linux/fd.h +++ b/include/uapi/linux/fd.h @@ -172,7 +172,10 @@ struct floppy_drive_params { * used in succession to try to read the disk. If the FDC cannot lock onto * the disk, the next format is tried. This uses the variable 'probing'. */ - short autodetect[8]; /* autodetected formats */ + +#define FD_AUTODETECT_SIZE 8 + + short autodetect[FD_AUTODETECT_SIZE]; /* autodetected formats */ int checkfreq; /* how often should the drive be checked for disk * changes */
Use FD_AUTODETECT_SIZE for autodetect buffer size in struct floppy_drive_params instead of a magic number. Signed-off-by: Denis Efremov <efremov@linux.com> --- drivers/block/floppy.c | 9 +++++---- include/uapi/linux/fd.h | 5 ++++- 2 files changed, 9 insertions(+), 5 deletions(-)