All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
To: Kees Cook <keescook@chromium.org>
Cc: Richard Purdie <rpurdie@rpsys.net>, Pavel Machek <pavel@ucw.cz>,
	Willy Tarreau <w@1wt.eu>,
	linux-leds@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] leds: Convert timers to use timer_setup()
Date: Thu, 26 Oct 2017 20:38:48 +0200	[thread overview]
Message-ID: <b4872e92-7a73-a86b-7ec2-ba7a79603dae@gmail.com> (raw)
In-Reply-To: <20171025103001.GA145942@beast>

Hi Kees,

Thanks for the patch.

On 10/25/2017 12:30 PM, Kees Cook wrote:
> 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 <rpurdie@rpsys.net>
> Cc: Jacek Anaszewski <jacek.anaszewski@gmail.com>
> Cc: Pavel Machek <pavel@ucw.cz>
> Cc: Willy Tarreau <w@1wt.eu>
> Cc: linux-leds@vger.kernel.org
> Signed-off-by: Kees Cook <keescook@chromium.org>
> ---
>  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(-)
> 
> diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
> index ef1360445413..fd83c7f77a95 100644
> --- a/drivers/leds/led-core.c
> +++ b/drivers/leds/led-core.c
> @@ -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);
>  
> diff --git a/drivers/leds/trigger/ledtrig-activity.c b/drivers/leds/trigger/ledtrig-activity.c
> index c6635c5e227a..5081894082bd 100644
> --- a/drivers/leds/trigger/ledtrig-activity.c
> +++ b/drivers/leds/trigger/ledtrig-activity.c
> @@ -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;
>  }
> diff --git a/drivers/leds/trigger/ledtrig-transient.c b/drivers/leds/trigger/ledtrig-transient.c
> index 7e6011bd3646..7acce64b692a 100644
> --- a/drivers/leds/trigger/ledtrig-transient.c
> +++ b/drivers/leds/trigger/ledtrig-transient.c
> @@ -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;
> 

Applied.

-- 
Best regards,
Jacek Anaszewski

      reply	other threads:[~2017-10-26 18:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-25 10:30 [PATCH] leds: Convert timers to use timer_setup() Kees Cook
2017-10-26 18:38 ` Jacek Anaszewski [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b4872e92-7a73-a86b-7ec2-ba7a79603dae@gmail.com \
    --to=jacek.anaszewski@gmail.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rpurdie@rpsys.net \
    --cc=w@1wt.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.