Commit 888ca6ed authored by Yangtao Li's avatar Yangtao Li Committed by Jaegeuk Kim
Browse files

f2fs: add sanity check for proc_mkdir



Return -ENOMEM when proc_mkdir failed.

Signed-off-by: default avatarYangtao Li <frank.li@vivo.com>
Reviewed-by: default avatarChao Yu <chao@kernel.org>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent b62e71be
Loading
Loading
Loading
Loading
+23 −16
Original line number Diff line number Diff line
@@ -1386,12 +1386,19 @@ int __init f2fs_init_sysfs(void)

	ret = kobject_init_and_add(&f2fs_feat, &f2fs_feat_ktype,
				   NULL, "features");
	if (ret) {
		kobject_put(&f2fs_feat);
		kset_unregister(&f2fs_kset);
	} else {
	if (ret)
		goto put_kobject;

	f2fs_proc_root = proc_mkdir("fs/f2fs", NULL);
	if (!f2fs_proc_root) {
		ret = -ENOMEM;
		goto put_kobject;
	}

	return 0;
put_kobject:
	kobject_put(&f2fs_feat);
	kset_unregister(&f2fs_kset);
	return ret;
}

@@ -1430,10 +1437,12 @@ int f2fs_register_sysfs(struct f2fs_sb_info *sbi)
	if (err)
		goto put_feature_list_kobj;

	if (f2fs_proc_root)
	sbi->s_proc = proc_mkdir(sb->s_id, f2fs_proc_root);
	if (!sbi->s_proc) {
		err = -ENOMEM;
		goto put_feature_list_kobj;
	}

	if (sbi->s_proc) {
	proc_create_single_data("segment_info", 0444, sbi->s_proc,
				segment_info_seq_show, sb);
	proc_create_single_data("segment_bits", 0444, sbi->s_proc,
@@ -1446,7 +1455,6 @@ int f2fs_register_sysfs(struct f2fs_sb_info *sbi)
				victim_bits_seq_show, sb);
	proc_create_single_data("discard_plist_info", 0444, sbi->s_proc,
				discard_plist_seq_show, sb);
	}
	return 0;
put_feature_list_kobj:
	kobject_put(&sbi->s_feature_list_kobj);
@@ -1462,7 +1470,6 @@ int f2fs_register_sysfs(struct f2fs_sb_info *sbi)

void f2fs_unregister_sysfs(struct f2fs_sb_info *sbi)
{
	if (sbi->s_proc)
	remove_proc_subtree(sbi->sb->s_id, f2fs_proc_root);

	kobject_put(&sbi->s_stat_kobj);