summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/sysfs.c
diff options
context:
space:
mode:
authorAnand Jain2015-03-20 11:01:20 +0100
committerDavid Sterba2015-05-27 12:27:19 +0200
commit8345ea31dc6e1772726d1d0b8864dedac55038e0 (patch)
treeb119c49cbd9ff49b4262bc7e490cae0eced223a4 /fs/btrfs/sysfs.c
parentBtrfs: sysfs: fix, undo sysfs device links (diff)
downloadkernel-qcow2-linux-8345ea31dc6e1772726d1d0b8864dedac55038e0.tar.gz
kernel-qcow2-linux-8345ea31dc6e1772726d1d0b8864dedac55038e0.tar.xz
kernel-qcow2-linux-8345ea31dc6e1772726d1d0b8864dedac55038e0.zip
Btrfs: sysfs: fix, kobject pointer clean up needed after kobject release
The sysfs clean up self test like in the below code fails, since fs_info->device_dir_kobject still points to its stale kobject. Reseting this pointer will help to fix this. open_ctree() { ret = btrfs_sysfs_add_one(fs_info); :: + btrfs_sysfs_remove_one(fs_info); + ret = btrfs_sysfs_add_one(fs_info); + if (ret) { + pr_err("BTRFS: failed to init sysfs interface: %d\n", ret); + goto fail_block_groups; + } Signed-off-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.cz>
Diffstat (limited to 'fs/btrfs/sysfs.c')
-rw-r--r--fs/btrfs/sysfs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index ca0786190edd..f31fcec01e9c 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -525,6 +525,7 @@ void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info)
btrfs_kobj_rm_device(fs_info, NULL);
kobject_del(fs_info->device_dir_kobj);
kobject_put(fs_info->device_dir_kobj);
+ fs_info->device_dir_kobj = NULL;
addrm_unknown_feature_attrs(fs_info, false);
sysfs_remove_group(&fs_info->super_kobj, &btrfs_feature_attr_group);
__btrfs_sysfs_remove_one(fs_info);