diff options
-rw-r--r-- | drivers/leds/led-class.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 052c7571e188..647b1263c579 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c | |||
@@ -287,6 +287,7 @@ int led_classdev_register_ext(struct device *parent, | |||
287 | ret = led_add_brightness_hw_changed(led_cdev); | 287 | ret = led_add_brightness_hw_changed(led_cdev); |
288 | if (ret) { | 288 | if (ret) { |
289 | device_unregister(led_cdev->dev); | 289 | device_unregister(led_cdev->dev); |
290 | led_cdev->dev = NULL; | ||
290 | mutex_unlock(&led_cdev->led_access); | 291 | mutex_unlock(&led_cdev->led_access); |
291 | return ret; | 292 | return ret; |
292 | } | 293 | } |
@@ -332,6 +333,9 @@ EXPORT_SYMBOL_GPL(led_classdev_register_ext); | |||
332 | */ | 333 | */ |
333 | void led_classdev_unregister(struct led_classdev *led_cdev) | 334 | void led_classdev_unregister(struct led_classdev *led_cdev) |
334 | { | 335 | { |
336 | if (IS_ERR_OR_NULL(led_cdev->dev)) | ||
337 | return; | ||
338 | |||
335 | #ifdef CONFIG_LEDS_TRIGGERS | 339 | #ifdef CONFIG_LEDS_TRIGGERS |
336 | down_write(&led_cdev->trigger_lock); | 340 | down_write(&led_cdev->trigger_lock); |
337 | if (led_cdev->trigger) | 341 | if (led_cdev->trigger) |