From: Andrew Morton Don't try and lock a list_head... Cc: Richard Purdie Cc: Russell King Signed-off-by: Andrew Morton --- drivers/leds/led-triggers.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff -puN drivers/leds/led-triggers.c~led-add-led-timer-trigger-fix drivers/leds/led-triggers.c --- devel/drivers/leds/led-triggers.c~led-add-led-timer-trigger-fix 2006-02-07 18:42:16.000000000 -0800 +++ devel-akpm/drivers/leds/led-triggers.c 2006-02-07 18:42:39.000000000 -0800 @@ -167,7 +167,7 @@ int led_trigger_register(struct led_trig write_unlock(&triggers_list_lock); /* Register with any LEDs that have this as a default trigger */ - read_lock(&leds_list); + read_lock(&leds_list_lock); list_for_each_entry(led_cdev, &leds_list, node) { write_lock(&led_cdev->trigger_lock); if (!led_cdev->trigger && led_cdev->default_trigger && @@ -175,7 +175,7 @@ int led_trigger_register(struct led_trig led_trigger_set(led_cdev, trigger); write_unlock(&led_cdev->trigger_lock); } - read_unlock(&leds_list); + read_unlock(&leds_list_lock); return 0; } @@ -203,14 +203,14 @@ void led_trigger_unregister(struct led_t write_unlock(&triggers_list_lock); /* Remove anyone actively using this trigger */ - read_lock(&leds_list); + read_lock(&leds_list_lock); list_for_each_entry(led_cdev, &leds_list, node) { write_lock(&led_cdev->trigger_lock); if (led_cdev->trigger == trigger) led_trigger_set(led_cdev, NULL); write_unlock(&led_cdev->trigger_lock); } - read_unlock(&leds_list); + read_unlock(&leds_list_lock); } void led_trigger_unregister_simple(struct led_trigger *trigger) _