Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

leds: trigger: panic: Simplify led_trigger_set_panic

I don't see why we iterate over all triggers to find the panic trigger.
We *are* the panic trigger. Therefore we also know that the panic
trigger doesn't have an activate() hook. So we can simplify the code
significantly.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Link: https://lore.kernel.org/r/84c0fa67-2f03-4474-aa75-914d65d88dd0@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Heiner Kallweit and committed by
Lee Jones
7eef64da ec18a2a8

+7 -16
+7 -16
drivers/leds/trigger/ledtrig-panic.c
··· 21 21 */ 22 22 static void led_trigger_set_panic(struct led_classdev *led_cdev) 23 23 { 24 - struct led_trigger *trig; 24 + if (led_cdev->trigger) 25 + list_del(&led_cdev->trig_list); 26 + list_add_tail(&led_cdev->trig_list, &trigger->led_cdevs); 25 27 26 - list_for_each_entry(trig, &trigger_list, next_trig) { 27 - if (strcmp("panic", trig->name)) 28 - continue; 29 - if (led_cdev->trigger) 30 - list_del(&led_cdev->trig_list); 31 - list_add_tail(&led_cdev->trig_list, &trig->led_cdevs); 28 + /* Avoid the delayed blink path */ 29 + led_cdev->blink_delay_on = 0; 30 + led_cdev->blink_delay_off = 0; 32 31 33 - /* Avoid the delayed blink path */ 34 - led_cdev->blink_delay_on = 0; 35 - led_cdev->blink_delay_off = 0; 36 - 37 - led_cdev->trigger = trig; 38 - if (trig->activate) 39 - trig->activate(led_cdev); 40 - break; 41 - } 32 + led_cdev->trigger = trigger; 42 33 } 43 34 44 35 static int led_trigger_panic_notifier(struct notifier_block *nb,