Fix error handling when registering new device
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
rc = class_device_register(&new_bd->class_dev);
if (unlikely(rc)) {
-error: kfree(new_bd);
+ kfree(new_bd);
return ERR_PTR(rc);
}
rc = backlight_register_fb(new_bd);
- if (unlikely(rc))
- goto error;
+ if (rc) {
+ class_device_unregister(&new_bd->class_dev);
+ return ERR_PTR(rc);
+ }
+
for (i = 0; i < ARRAY_SIZE(bl_class_device_attributes); i++) {
rc = class_device_create_file(&new_bd->class_dev,
rc = class_device_register(&new_ld->class_dev);
if (unlikely(rc)) {
-error: kfree(new_ld);
+ kfree(new_ld);
return ERR_PTR(rc);
}
rc = lcd_register_fb(new_ld);
-
- if (unlikely(rc))
- goto error;
+ if (rc) {
+ class_device_unregister(&new_ld->class_dev);
+ return ERR_PTR(rc);
+ }
for (i = 0; i < ARRAY_SIZE(lcd_class_device_attributes); i++) {
rc = class_device_create_file(&new_ld->class_dev,