diff options
-rw-r--r-- | drivers/leds/led-class.c | 1 | ||||
-rw-r--r-- | drivers/leds/led-core.c | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 3c7e3487b373..85848c5da705 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c | |||
@@ -57,6 +57,7 @@ static ssize_t brightness_store(struct device *dev, | |||
57 | if (state == LED_OFF) | 57 | if (state == LED_OFF) |
58 | led_trigger_remove(led_cdev); | 58 | led_trigger_remove(led_cdev); |
59 | led_set_brightness(led_cdev, state); | 59 | led_set_brightness(led_cdev, state); |
60 | flush_work(&led_cdev->set_brightness_work); | ||
60 | 61 | ||
61 | ret = size; | 62 | ret = size; |
62 | unlock: | 63 | unlock: |
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c index e3da7c03da1b..e9ae7f87ab90 100644 --- a/drivers/leds/led-core.c +++ b/drivers/leds/led-core.c | |||
@@ -164,6 +164,11 @@ static void led_blink_setup(struct led_classdev *led_cdev, | |||
164 | unsigned long *delay_on, | 164 | unsigned long *delay_on, |
165 | unsigned long *delay_off) | 165 | unsigned long *delay_off) |
166 | { | 166 | { |
167 | /* | ||
168 | * If "set brightness to 0" is pending in workqueue, we don't | ||
169 | * want that to be reordered after blink_set() | ||
170 | */ | ||
171 | flush_work(&led_cdev->set_brightness_work); | ||
167 | if (!test_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags) && | 172 | if (!test_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags) && |
168 | led_cdev->blink_set && | 173 | led_cdev->blink_set && |
169 | !led_cdev->blink_set(led_cdev, delay_on, delay_off)) | 174 | !led_cdev->blink_set(led_cdev, delay_on, delay_off)) |