Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
[pandora-kernel.git] / drivers / s390 / char / tape_class.c
index a5c68e6..56b8761 100644 (file)
@@ -76,14 +76,22 @@ struct tape_class_device *register_tape_dev(
                                device,
                                "%s", tcd->device_name
                        );
-       sysfs_create_link(
+       rc = IS_ERR(tcd->class_device) ? PTR_ERR(tcd->class_device) : 0;
+       if (rc)
+               goto fail_with_cdev;
+       rc = sysfs_create_link(
                &device->kobj,
                &tcd->class_device->kobj,
                tcd->mode_name
        );
+       if (rc)
+               goto fail_with_class_device;
 
        return tcd;
 
+fail_with_class_device:
+       class_device_destroy(tape_class, tcd->char_device->dev);
+
 fail_with_cdev:
        cdev_del(tcd->char_device);