leds: Convert timers to use timer_setup()
PATCH 1/1 leds: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly.
Cc Richard Purdie <[email protected]>
Cc Jacek Anaszewski <[email protected]>
Cc Pavel Machek <[email protected]>
Cc Willy Tarreau <[email protected]>
Signed-off-by Kees Cook <[email protected]>
--- drivers/leds/led-core.c | 7 +++---- drivers/leds/trigger/ledtrig-activity.c | 14 ++++++++------ drivers/leds/trigger/ledtrig-transient.c | 12 +++++++----- 3 files changed, 18 insertions(+), 15 deletions(-)
drivers/leds/led-core.c +3 -4
@@ -45,9 +45,9 @@ static int __led_set_brightness_blocking(struct led_classdev *led_cdev,return led_cdev->brightness_set_blocking (led_cdev, value); } -static void led_timer_function (unsigned long data) +static void led_timer_function (struct timer_list *t) { -struct led_classdev *led_cdev = (void *)data; +struct led_classdev *led_cdev =from_timer (led_cdev, t, blink_timer);unsigned long brightness;unsigned long delay;
@@ -178,8 +178,7 @@ void led_init_core(struct led_classdev *led_cdev) {INIT_WORK (&led_cdev->set_brightness_work, set_brightness_delayed); -setup_timer (&led_cdev->blink_timer, led_timer_function, - (unsigned long )led_cdev); +timer_setup (&led_cdev->blink_timer, led_timer_function,0 ); }EXPORT_SYMBOL_GPL (led_init_core);
drivers/leds/trigger/ledtrig-activity.c +8 -6
@@ -24,6 +24,7 @@ static int panic_detected;struct activity_data {struct timer_list timer; +struct led_classdev *led_cdev;u64 last_used;u64 last_boot;int time_left;
@@ -31,10 +32,11 @@ struct activity_data {int invert; }; -static void led_activity_function (unsigned long data) +static void led_activity_function (struct timer_list *t) { -struct led_classdev *led_cdev = (struct led_classdev *)data; -struct activity_data *activity_data = led_cdev->trigger_data; +struct activity_data *activity_data =from_timer (activity_data, t, + timer); +struct led_classdev *led_cdev = activity_data->led_cdev;struct timespec boot_time;unsigned int target;unsigned int usage;
@@ -195,11 +197,11 @@ static void activity_activate(struct led_classdev *led_cdev)return ; } -setup_timer (&activity_data->timer, - led_activity_function, (unsigned long )led_cdev); + activity_data->led_cdev = led_cdev; +timer_setup (&activity_data->timer, led_activity_function,0 );if (!led_cdev->blink_brightness) led_cdev->blink_brightness = led_cdev->max_brightness; -led_activity_function (activity_data->timer.data); +led_activity_function (&activity_data->timer);set_bit (LED_BLINK_SW , &led_cdev->work_flags); led_cdev->activated = true; }
drivers/leds/trigger/ledtrig-transient.c +7 -5
@@ -33,12 +33,14 @@ struct transient_trig_data {int restore_state;unsigned long duration;struct timer_list timer; +struct led_classdev *led_cdev; }; -static void transient_timer_function (unsigned long data) +static void transient_timer_function (struct timer_list *t) { -struct led_classdev *led_cdev = (struct led_classdev *) data; -struct transient_trig_data *transient_data = led_cdev->trigger_data; +struct transient_trig_data *transient_data = +from_timer (transient_data, t, timer); +struct led_classdev *led_cdev = transient_data->led_cdev; transient_data->activate =0 ;led_set_brightness_nosleep (led_cdev, transient_data->restore_state);
@@ -169,6 +171,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev)return ; } led_cdev->trigger_data = tdata; + tdata->led_cdev = led_cdev; rc =device_create_file (led_cdev->dev, &dev_attr_activate);if (rc)
@@ -182,8 +185,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev)if (rc) goto err_out_state; -setup_timer (&tdata->timer, transient_timer_function, - (unsigned long ) led_cdev); +timer_setup (&tdata->timer, transient_timer_function,0 ); led_cdev->activated = true;return ;
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Jacek Anaszewski
AppliedHi Kees,
Thanks for the patch.
Quoted 116 lines · Kees Cook
In preparation for unconditionally passing the struct
timer_listpointer to all timer callbacks, switch to using the newtimer_setup()andfrom_timer()to pass the timer pointer explicitly.Cc Richard Purdie <[email protected]>Cc Jacek Anaszewski <[email protected]>Cc Pavel Machek <[email protected]>Cc Willy Tarreau <[email protected]>Signed-off-by Kees Cook <[email protected]>--- drivers/leds/led-core.c | 7 +++---- drivers/leds/trigger/ledtrig-activity.c | 14 ++++++++------ drivers/leds/trigger/ledtrig-transient.c | 12 +++++++----- 3 files changed, 18 insertions(+), 15 deletions(-)drivers/leds/led-core.c +3
-4@@ -45,9 +45,9 @@ static int __led_set_brightness_blocking(struct led_classdev *led_cdev,return led_cdev->brightness_set_blocking (led_cdev, value); } -static void led_timer_function (unsigned long data) +static void led_timer_function (struct timer_list *t) { -struct led_classdev *led_cdev = (void *)data; +struct led_classdev *led_cdev =from_timer (led_cdev, t, blink_timer);unsigned long brightness;unsigned long delay;@@ -178,8 +178,7 @@ void led_init_core(struct led_classdev *led_cdev) {INIT_WORK (&led_cdev->set_brightness_work, set_brightness_delayed); -setup_timer (&led_cdev->blink_timer, led_timer_function, - (unsigned long )led_cdev); +timer_setup (&led_cdev->blink_timer, led_timer_function,0 ); }EXPORT_SYMBOL_GPL (led_init_core);drivers/leds/trigger/ledtrig-activity.c +8
-6@@ -24,6 +24,7 @@ static int panic_detected;struct activity_data {struct timer_list timer; +struct led_classdev *led_cdev;u64 last_used;u64 last_boot;int time_left;@@ -31,10 +32,11 @@ struct activity_data {int invert; }; -static void led_activity_function (unsigned long data) +static void led_activity_function (struct timer_list *t) { -struct led_classdev *led_cdev = (struct led_classdev *)data; -struct activity_data *activity_data = led_cdev->trigger_data; +struct activity_data *activity_data =from_timer (activity_data, t, + timer); +struct led_classdev *led_cdev = activity_data->led_cdev;struct timespec boot_time;unsigned int target;unsigned int usage;@@ -195,11 +197,11 @@ static void activity_activate(struct led_classdev *led_cdev)return ; } -setup_timer (&activity_data->timer, - led_activity_function, (unsigned long )led_cdev); + activity_data->led_cdev = led_cdev; +timer_setup (&activity_data->timer, led_activity_function,0 );if (!led_cdev->blink_brightness) led_cdev->blink_brightness = led_cdev->max_brightness; -led_activity_function (activity_data->timer.data); +led_activity_function (&activity_data->timer);set_bit (LED_BLINK_SW , &led_cdev->work_flags); led_cdev->activated = true; }drivers/leds/trigger/ledtrig-transient.c +6
-3@@ -33,12 +33,14 @@ struct transient_trig_data {int restore_state;unsigned long duration;struct timer_list timer; +struct led_classdev *led_cdev; }; -static void transient_timer_function (unsigned long data) +static void transient_timer_function (struct timer_list *t) { -struct led_classdev *led_cdev = (struct led_classdev *) data; -struct transient_trig_data *transient_data = led_cdev->trigger_data; +struct transient_trig_data *transient_data = +from_timer (transient_data, t, timer); +struct led_classdev *led_cdev = transient_data->led_cdev; transient_data->activate =0 ;led_set_brightness_nosleep (led_cdev, transient_data->restore_state);@@ -169,6 +171,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev)return ; } led_cdev->trigger_data = tdata; + tdata->led_cdev = led_cdev; rc =device_create_file (led_cdev->dev, &dev_attr_activate);if (rc)
drivers/leds/trigger/ledtrig-transient.c static void transient_trig_activate(struct led_classdev *led_cdev) · line 191
Quoted 9 lines
drivers/leds/trigger/ledtrig-transient.c +1
-2@@ -182,8 +185,7 @@ static void transient_trig_activate(struct led_classdev *led_cdev)if (rc) goto err_out_state; -setup_timer (&tdata->timer, transient_timer_function, - (unsigned long ) led_cdev); +timer_setup (&tdata->timer, transient_timer_function,0 ); led_cdev->activated = true;return ;
Applied.
Signature · 2 lines
Best regards, Jacek Anaszewski