cgroup: relocate setting of CGRP_DEAD
In cgroup_destroy_locked(), move setting of CGRP_DEAD above invocations of kill_css(). This doesn't make any visible behavior difference now but will be used to inhibit manipulating controller enable states of a dying cgroup on the unified hierarchy. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Li Zefan <lizefan@huawei.com>
This commit is contained in:
parent
b8dadcb58d
commit
5d77381fd8
1 changed files with 9 additions and 9 deletions
|
@ -3867,6 +3867,15 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)
|
||||||
if (!empty)
|
if (!empty)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mark @cgrp dead. This prevents further task migration and child
|
||||||
|
* creation by disabling cgroup_lock_live_group(). Note that
|
||||||
|
* CGRP_DEAD assertion is depended upon by css_next_child() to
|
||||||
|
* resume iteration after dropping RCU read lock. See
|
||||||
|
* css_next_child() for details.
|
||||||
|
*/
|
||||||
|
set_bit(CGRP_DEAD, &cgrp->flags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initiate massacre of all css's. cgroup_destroy_css_killed()
|
* Initiate massacre of all css's. cgroup_destroy_css_killed()
|
||||||
* will be invoked to perform the rest of destruction once the
|
* will be invoked to perform the rest of destruction once the
|
||||||
|
@ -3878,15 +3887,6 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)
|
||||||
kill_css(css);
|
kill_css(css);
|
||||||
mutex_lock(&cgroup_mutex);
|
mutex_lock(&cgroup_mutex);
|
||||||
|
|
||||||
/*
|
|
||||||
* Mark @cgrp dead. This prevents further task migration and child
|
|
||||||
* creation by disabling cgroup_lock_live_group(). Note that
|
|
||||||
* CGRP_DEAD assertion is depended upon by css_next_child() to
|
|
||||||
* resume iteration after dropping RCU read lock. See
|
|
||||||
* css_next_child() for details.
|
|
||||||
*/
|
|
||||||
set_bit(CGRP_DEAD, &cgrp->flags);
|
|
||||||
|
|
||||||
/* CGRP_DEAD is set, remove from ->release_list for the last time */
|
/* CGRP_DEAD is set, remove from ->release_list for the last time */
|
||||||
raw_spin_lock(&release_list_lock);
|
raw_spin_lock(&release_list_lock);
|
||||||
if (!list_empty(&cgrp->release_list))
|
if (!list_empty(&cgrp->release_list))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue