Merge branch 'for-5.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
Pull cgroup fix from Tejun Heo: "Fix leak of filesystem context root which is triggered by LTP. Not too likely to be a problem in non-testing environments" * 'for-5.14-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: cgroup1: fix leaked context root causing sporadic NULL deref in LTP
This commit is contained in:
Коммит
51bbe7ebac
|
@ -61,7 +61,6 @@ extern void __init chrdev_init(void);
|
||||||
*/
|
*/
|
||||||
extern const struct fs_context_operations legacy_fs_context_ops;
|
extern const struct fs_context_operations legacy_fs_context_ops;
|
||||||
extern int parse_monolithic_mount_data(struct fs_context *, void *);
|
extern int parse_monolithic_mount_data(struct fs_context *, void *);
|
||||||
extern void fc_drop_locked(struct fs_context *);
|
|
||||||
extern void vfs_clean_context(struct fs_context *fc);
|
extern void vfs_clean_context(struct fs_context *fc);
|
||||||
extern int finish_clean_context(struct fs_context *fc);
|
extern int finish_clean_context(struct fs_context *fc);
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,7 @@ extern int vfs_get_tree(struct fs_context *fc);
|
||||||
extern void put_fs_context(struct fs_context *fc);
|
extern void put_fs_context(struct fs_context *fc);
|
||||||
extern int vfs_parse_fs_param_source(struct fs_context *fc,
|
extern int vfs_parse_fs_param_source(struct fs_context *fc,
|
||||||
struct fs_parameter *param);
|
struct fs_parameter *param);
|
||||||
|
extern void fc_drop_locked(struct fs_context *fc);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sget() wrappers to be called from the ->get_tree() op.
|
* sget() wrappers to be called from the ->get_tree() op.
|
||||||
|
|
|
@ -1221,9 +1221,7 @@ int cgroup1_get_tree(struct fs_context *fc)
|
||||||
ret = cgroup_do_get_tree(fc);
|
ret = cgroup_do_get_tree(fc);
|
||||||
|
|
||||||
if (!ret && percpu_ref_is_dying(&ctx->root->cgrp.self.refcnt)) {
|
if (!ret && percpu_ref_is_dying(&ctx->root->cgrp.self.refcnt)) {
|
||||||
struct super_block *sb = fc->root->d_sb;
|
fc_drop_locked(fc);
|
||||||
dput(fc->root);
|
|
||||||
deactivate_locked_super(sb);
|
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче