block/floppy: Convert callback to pass timer_list
Subsystems (2)
PATCH 1/1 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 <[email protected]>
Cc Jens Axboe <[email protected]>
Cc Ming Lei <[email protected]>
Cc Al Viro <[email protected]>
Cc Geliang Tang <[email protected]>
Cc Thomas Gleixner <[email protected]>
Signed-off-by Kees Cook <[email protected]>
---
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(-)
drivers/block/floppy.c +7 -3
@@ -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" );
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Jens Axboe
maintainerQuoted 3 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer 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.
Applied for 4.15.
Signature · 1 line
Jens Axboe