diff options
Diffstat (limited to 'drivers/leds/led-triggers.c')
| -rw-r--r-- | drivers/leds/led-triggers.c | 21 | 
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 3c972b2f989..c3734f10fdd 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c @@ -13,7 +13,6 @@  #include <linux/module.h>  #include <linux/kernel.h> -#include <linux/init.h>  #include <linux/list.h>  #include <linux/spinlock.h>  #include <linux/device.h> @@ -220,9 +219,12 @@ void led_trigger_unregister(struct led_trigger *trig)  {  	struct led_classdev *led_cdev; +	if (list_empty_careful(&trig->next_trig)) +		return; +  	/* Remove from the list of led triggers */  	down_write(&triggers_list_lock); -	list_del(&trig->next_trig); +	list_del_init(&trig->next_trig);  	up_write(&triggers_list_lock);  	/* Remove anyone actively using this trigger */ @@ -242,18 +244,14 @@ EXPORT_SYMBOL_GPL(led_trigger_unregister);  void led_trigger_event(struct led_trigger *trig,  			enum led_brightness brightness)  { -	struct list_head *entry; +	struct led_classdev *led_cdev;  	if (!trig)  		return;  	read_lock(&trig->leddev_list_lock); -	list_for_each(entry, &trig->led_cdevs) { -		struct led_classdev *led_cdev; - -		led_cdev = list_entry(entry, struct led_classdev, trig_list); +	list_for_each_entry(led_cdev, &trig->led_cdevs, trig_list)  		led_set_brightness(led_cdev, brightness); -	}  	read_unlock(&trig->leddev_list_lock);  }  EXPORT_SYMBOL_GPL(led_trigger_event); @@ -264,16 +262,13 @@ static void led_trigger_blink_setup(struct led_trigger *trig,  			     int oneshot,  			     int invert)  { -	struct list_head *entry; +	struct led_classdev *led_cdev;  	if (!trig)  		return;  	read_lock(&trig->leddev_list_lock); -	list_for_each(entry, &trig->led_cdevs) { -		struct led_classdev *led_cdev; - -		led_cdev = list_entry(entry, struct led_classdev, trig_list); +	list_for_each_entry(led_cdev, &trig->led_cdevs, trig_list) {  		if (oneshot)  			led_blink_set_oneshot(led_cdev, delay_on, delay_off,  					      invert);  | 
