From 82f80ef5f337e6c66392c58a968244b98542acd2 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Wed, 10 May 2023 18:22:34 +0200 Subject: leds: Clear LED_INIT_DEFAULT_TRIGGER when clearing current trigger Not all triggers use LED_INIT_DEFAULT_TRIGGER, which means that it will not get cleared when the default trigger is a trigger which does not use it such as "default-on". If the default trigger then later gets replaced by a trigger which does check LED_INIT_DEFAULT_TRIGGER, such as "timer" then that trigger will behave as if it is the default trigger which it should not do. To fix this clear the LED_INIT_DEFAULT_TRIGGER flag when clearing the current trigger, so that it will not be set for any subsequently set (non default) triggers. Signed-off-by: Hans de Goede Reviewed-by: Jacek Anaszewski Tested-by: Yauhen Kharuzhy Link: https://lore.kernel.org/r/20230510162234.291439-5-hdegoede@redhat.com Signed-off-by: Lee Jones --- drivers/leds/led-triggers.c | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/leds/led-triggers.c') diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 8214d3f7bc5f..6a5e1f41f9a4 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c @@ -185,6 +185,7 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) led_cdev->trigger = NULL; led_cdev->trigger_data = NULL; led_cdev->activated = false; + led_cdev->flags &= ~LED_INIT_DEFAULT_TRIGGER; led_set_brightness(led_cdev, LED_OFF); } if (trig) { -- cgit v1.2.3