Merge tag 'io_uring-5.15-2021-09-11' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / fs / nilfs2 / sysfs.c
index 68e8d61..62f8a7a 100644 (file)
@@ -51,11 +51,9 @@ static const struct sysfs_ops nilfs_##name##_attr_ops = { \
 #define NILFS_DEV_INT_GROUP_TYPE(name, parent_name) \
 static void nilfs_##name##_attr_release(struct kobject *kobj) \
 { \
-       struct nilfs_sysfs_##parent_name##_subgroups *subgroups; \
-       struct the_nilfs *nilfs = container_of(kobj->parent, \
-                                               struct the_nilfs, \
-                                               ns_##parent_name##_kobj); \
-       subgroups = nilfs->ns_##parent_name##_subgroups; \
+       struct nilfs_sysfs_##parent_name##_subgroups *subgroups = container_of(kobj, \
+                                               struct nilfs_sysfs_##parent_name##_subgroups, \
+                                               sg_##name##_kobj); \
        complete(&subgroups->sg_##name##_kobj_unregister); \
 } \
 static struct kobj_type nilfs_##name##_ktype = { \
@@ -81,12 +79,12 @@ static int nilfs_sysfs_create_##name##_group(struct the_nilfs *nilfs) \
        err = kobject_init_and_add(kobj, &nilfs_##name##_ktype, parent, \
                                    #name); \
        if (err) \
-               return err; \
-       return 0; \
+               kobject_put(kobj); \
+       return err; \
 } \
 static void nilfs_sysfs_delete_##name##_group(struct the_nilfs *nilfs) \
 { \
-       kobject_del(&nilfs->ns_##parent_name##_subgroups->sg_##name##_kobj); \
+       kobject_put(&nilfs->ns_##parent_name##_subgroups->sg_##name##_kobj); \
 }
 
 /************************************************************************
@@ -197,14 +195,14 @@ int nilfs_sysfs_create_snapshot_group(struct nilfs_root *root)
        }
 
        if (err)
-               return err;
+               kobject_put(&root->snapshot_kobj);
 
-       return 0;
+       return err;
 }
 
 void nilfs_sysfs_delete_snapshot_group(struct nilfs_root *root)
 {
-       kobject_del(&root->snapshot_kobj);
+       kobject_put(&root->snapshot_kobj);
 }
 
 /************************************************************************
@@ -986,7 +984,7 @@ int nilfs_sysfs_create_device_group(struct super_block *sb)
        err = kobject_init_and_add(&nilfs->ns_dev_kobj, &nilfs_dev_ktype, NULL,
                                    "%s", sb->s_id);
        if (err)
-               goto free_dev_subgroups;
+               goto cleanup_dev_kobject;
 
        err = nilfs_sysfs_create_mounted_snapshots_group(nilfs);
        if (err)
@@ -1023,9 +1021,7 @@ delete_mounted_snapshots_group:
        nilfs_sysfs_delete_mounted_snapshots_group(nilfs);
 
 cleanup_dev_kobject:
-       kobject_del(&nilfs->ns_dev_kobj);
-
-free_dev_subgroups:
+       kobject_put(&nilfs->ns_dev_kobj);
        kfree(nilfs->ns_dev_subgroups);
 
 failed_create_device_group: