Merge tag 'led-fixes-for-5.2-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 2 Jun 2019 17:14:25 +0000 (10:14 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 2 Jun 2019 17:14:25 +0000 (10:14 -0700)
Pull LED fix from Jacek Anaszewski:
 "Fix for a recent change in LED core, that didn't take into account the
  possibility of calling led_blink_setup() from atomic context"

* tag 'led-fixes-for-5.2-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds:
  leds: avoid flush_work in atomic context

drivers/leds/led-core.c
drivers/leds/trigger/ledtrig-timer.c

index e9ae7f87ab900b37b9109e5dffd69db60a378b68..e3da7c03da1b5a1b627fe49110961e6909cac2bc 100644 (file)
@@ -164,11 +164,6 @@ static void led_blink_setup(struct led_classdev *led_cdev,
                     unsigned long *delay_on,
                     unsigned long *delay_off)
 {
-       /*
-        * If "set brightness to 0" is pending in workqueue, we don't
-        * want that to be reordered after blink_set()
-        */
-       flush_work(&led_cdev->set_brightness_work);
        if (!test_bit(LED_BLINK_ONESHOT, &led_cdev->work_flags) &&
            led_cdev->blink_set &&
            !led_cdev->blink_set(led_cdev, delay_on, delay_off))
index ca898c1383beedbcb1b7250a20390e8a3144f913..427fc3c303d5a78ed4dbff5efcb458055e6e7a29 100644 (file)
@@ -113,6 +113,11 @@ static int timer_trig_activate(struct led_classdev *led_cdev)
                led_cdev->flags &= ~LED_INIT_DEFAULT_TRIGGER;
        }
 
+       /*
+        * If "set brightness to 0" is pending in workqueue, we don't
+        * want that to be reordered after blink_set()
+        */
+       flush_work(&led_cdev->set_brightness_work);
        led_blink_set(led_cdev, &led_cdev->blink_delay_on,
                      &led_cdev->blink_delay_off);