diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 559a408..44d13ac 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c @@ -113,13 +113,6 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev) if (rc) goto err_out; - /* add to the list of leds */ - down_write(&leds_list_lock); - list_add_tail(&led_cdev->node, &leds_list); - up_write(&leds_list_lock); - - led_update_brightness(led_cdev); - #ifdef CONFIG_LEDS_TRIGGERS init_rwsem(&led_cdev->trigger_lock); @@ -130,6 +123,13 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev) led_trigger_set_default(led_cdev); #endif + led_update_brightness(led_cdev); + + /* add to the list of leds */ + down_write(&leds_list_lock); + list_add_tail(&led_cdev->node, &leds_list); + up_write(&leds_list_lock); + printk(KERN_INFO "Registered led device: %s\n", led_cdev->name); @@ -138,7 +138,6 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev) #ifdef CONFIG_LEDS_TRIGGERS err_out_led_list: device_remove_file(led_cdev->dev, &dev_attr_brightness); - list_del(&led_cdev->node); #endif err_out: device_unregister(led_cdev->dev);