diff options
author | Anand Jain <Anand.Jain@oracle.com> | 2015-03-09 18:38:23 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2015-05-27 06:27:19 -0400 |
commit | 4d435731f99db87020730c4b17e1da148908340e (patch) | |
tree | 0999c9da1b0641d8a77e181508dc030bf20bf7dd | |
parent | 8345ea31dc6e1772726d1d0b8864dedac55038e0 (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.c | 10 |
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); |