diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 0e2086c5ff28..d34709ea304e 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c @@ -200,6 +200,13 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) */ flush_work(&led_cdev->set_brightness_work); + /* + * Some activate() calls use led_trigger_event() to initialize + * the brightness of the LED for which the trigger is being set. + * Ensure the led_cdev is visible on trig->led_cdevs for this. + */ + synchronize_rcu(); + ret = 0; if (trig->activate) ret = trig->activate(led_cdev);