Messages in this thread Patch in this message | | | Date | Wed, 4 Oct 2017 17:49:29 -0700 | From | Kees Cook <> | Subject | [PATCH] block/floppy: Convert callback to pass timer_list |
| |
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to passing in the timer pointer explicitly. Calculate the drive from the offset of the timer in the timer list.
Cc: Jiri Kosina <jikos@kernel.org> Cc: Jens Axboe <axboe@kernel.dk> Cc: Ming Lei <tom.leiming@gmail.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Geliang Tang <geliangtang@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Kees Cook <keescook@chromium.org> --- This requires commit 686fef928bba ("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone. --- drivers/block/floppy.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 60c086a53609..9390bd078fb0 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -899,10 +899,14 @@ static void unlock_fdc(void) } /* switches the motor off after a given timeout */ -static void motor_off_callback(unsigned long nr) +static void motor_off_callback(struct timer_list *t) { + unsigned long nr = t - motor_off_timer; unsigned char mask = ~(0x10 << UNIT(nr)); + if (WARN_ON_ONCE(nr >= N_DRIVE)) + return; + set_dor(FDC(nr), mask, 0); } @@ -3043,7 +3047,7 @@ static void raw_cmd_done(int flag) else raw_cmd->flags &= ~FD_RAW_DISK_CHANGE; if (raw_cmd->flags & FD_RAW_NO_MOTOR_AFTER) - motor_off_callback(current_drive); + motor_off_callback(&motor_off_timer[current_drive]); if (raw_cmd->next && (!(raw_cmd->flags & FD_RAW_FAILURE) || @@ -4538,7 +4542,7 @@ static int __init do_floppy_init(void) disks[drive]->fops = &floppy_fops; sprintf(disks[drive]->disk_name, "fd%d", drive); - setup_timer(&motor_off_timer[drive], motor_off_callback, drive); + timer_setup(&motor_off_timer[drive], motor_off_callback, 0); } err = register_blkdev(FLOPPY_MAJOR, "fd"); -- 2.7.4
-- Kees Cook Pixel Security
| |