aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnand Jain <Anand.Jain@oracle.com>2015-03-09 18:38:23 -0400
committerDavid Sterba <dsterba@suse.cz>2015-05-27 06:27:19 -0400
commit4d435731f99db87020730c4b17e1da148908340e (patch)
tree0999c9da1b0641d8a77e181508dc030bf20bf7dd
parent8345ea31dc6e1772726d1d0b8864dedac55038e0 (diff)
Btrfc: sysfs: fix, check if device_dir_kobj is init before destroy
Since the failure code in the btrfs_sysfs_add_one() can call btrfs_sysfs_remove_one() even before device_dir_kobj has been created we need to check if its null. Signed-off-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.cz>
-rw-r--r--fs/btrfs/sysfs.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index f31fcec01e9c..6218d31a6912 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -522,10 +522,12 @@ void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info)
522 kobject_del(fs_info->space_info_kobj); 522 kobject_del(fs_info->space_info_kobj);
523 kobject_put(fs_info->space_info_kobj); 523 kobject_put(fs_info->space_info_kobj);
524 } 524 }
525 btrfs_kobj_rm_device(fs_info, NULL); 525 if (fs_info->device_dir_kobj) {
526 kobject_del(fs_info->device_dir_kobj); 526 btrfs_kobj_rm_device(fs_info, NULL);
527 kobject_put(fs_info->device_dir_kobj); 527 kobject_del(fs_info->device_dir_kobj);
528 fs_info->device_dir_kobj = NULL; 528 kobject_put(fs_info->device_dir_kobj);
529 fs_info->device_dir_kobj = NULL;
530 }
529 addrm_unknown_feature_attrs(fs_info, false); 531 addrm_unknown_feature_attrs(fs_info, false);
530 sysfs_remove_group(&fs_info->super_kobj, &btrfs_feature_attr_group); 532 sysfs_remove_group(&fs_info->super_kobj, &btrfs_feature_attr_group);
531 __btrfs_sysfs_remove_one(fs_info); 533 __btrfs_sysfs_remove_one(fs_info);