Commit 51bbe7eb authored by Linus Torvalds's avatar Linus Torvalds

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
parents 82d712f6 1e7107c5
...@@ -61,7 +61,6 @@ extern void __init chrdev_init(void); ...@@ -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); ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment