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,