Commit 1f779fb2 authored by Li Zefan's avatar Li Zefan Committed by Tejun Heo

cgroup: don't destroy the default root

The default root is allocated and initialized at boot phase, so we
shouldn't destroy the default root when it's umounted, otherwise
it will lead to disaster.

Just try mount and then umount the default root, and the kernel will
crash immediately.

v2:
- No need to check for CSS_NO_REF in cgroup_get/put(). (Tejun)
- Better call cgroup_put() for the default root in kill_sb(). (Tejun)
- Add a comment.
Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 5533e011
...@@ -1780,8 +1780,11 @@ static void cgroup_kill_sb(struct super_block *sb) ...@@ -1780,8 +1780,11 @@ static void cgroup_kill_sb(struct super_block *sb)
* If @root doesn't have any mounts or children, start killing it. * If @root doesn't have any mounts or children, start killing it.
* This prevents new mounts by disabling percpu_ref_tryget_live(). * This prevents new mounts by disabling percpu_ref_tryget_live().
* cgroup_mount() may wait for @root's release. * cgroup_mount() may wait for @root's release.
*
* And don't kill the default root.
*/ */
if (css_has_online_children(&root->cgrp.self)) if (css_has_online_children(&root->cgrp.self) ||
root == &cgrp_dfl_root)
cgroup_put(&root->cgrp); cgroup_put(&root->cgrp);
else else
percpu_ref_kill(&root->cgrp.self.refcnt); percpu_ref_kill(&root->cgrp.self.refcnt);
......
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