History

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

Linus Torvalds committed 5 years ago

Commit 51bbe7e2 parents 82d712f 1e7107c3 files · +2 −4Browse files

Unified · Split

3 files
  1. fs/internal.h +0 −1
  2. include/linux/fs_context.h +1 −0
  3. kernel/cgroup/cgroup-v1.c +1 −3
fs/internal.h+0−1
@@ -61,7 +61,6 @@ extern void __init chrdev_init(void); · 60 unmodified lines
61 */61 */
62extern const struct fs_context_operations legacy_fs_context_ops;62extern const struct fs_context_operations legacy_fs_context_ops;
63extern int parse_monolithic_mount_data(struct fs_context *, void *);63extern int parse_monolithic_mount_data(struct fs_context *, void *);
64extern void fc_drop_locked(struct fs_context *);
65extern void vfs_clean_context(struct fs_context *fc);64extern void vfs_clean_context(struct fs_context *fc);
66extern int finish_clean_context(struct fs_context *fc);65extern int finish_clean_context(struct fs_context *fc);
67 66
include/linux/fs_context.h+1−0
@@ -141,6 +141,7 @@ extern int vfs_get_tree(struct fs_context *fc); · 140 unmodified lines
141extern void put_fs_context(struct fs_context *fc);141extern void put_fs_context(struct fs_context *fc);
142extern int vfs_parse_fs_param_source(struct fs_context *fc,142extern int vfs_parse_fs_param_source(struct fs_context *fc,
143 struct fs_parameter *param);143 struct fs_parameter *param);
144extern void fc_drop_locked(struct fs_context *fc);
144 145
145/*146/*
146 * sget() wrappers to be called from the ->get_tree() op.147 * sget() wrappers to be called from the ->get_tree() op.
kernel/cgroup/cgroup-v1.c+1−3
@@ -1221,9 +1221,7 @@ int cgroup1_get_tree(struct fs_context *fc) · 1220 unmodified lines
1221 ret = cgroup_do_get_tree(fc);1221 ret = cgroup_do_get_tree(fc);
1222 1222
1223 if (!ret && percpu_ref_is_dying(&ctx->root->cgrp.self.refcnt)) {1223 if (!ret && percpu_ref_is_dying(&ctx->root->cgrp.self.refcnt)) {
1224 struct super_block *sb = fc->root->d_sb;1224 fc_drop_locked(fc);
1225 dput(fc->root);
1226 deactivate_locked_super(sb);
1227 ret = 1;1225 ret = 1;
1228 }1226 }
1229 1227

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t