cgroup: Fix incorrect WARN_ON_ONCE() in css_release_work_fn()
It turns out that the WARN_ON_ONCE() call in css_release_work_fn introduced by commitab03125268
("cgroup: Show # of subsystem CSSes in cgroup.stat") is incorrect. Although css->nr_descendants must be 0 when a css is released and ready to be freed, the corresponding cgrp->nr_dying_subsys[ss->id] may not be 0 if a subsystem is activated and deactivated multiple times with one or more of its previous activation leaving behind dying csses. Fix the incorrect warning by removing the cgrp->nr_dying_subsys check. Fixes:ab03125268
("cgroup: Show # of subsystem CSSes in cgroup.stat") Closes: https://lore.kernel.org/cgroups/6f301773-2fce-4602-a391-8af7ef00b2fb@redhat.com/T/#t Signed-off-by: Waiman Long <longman@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
92841d6e23
commit
9b103943ab
@ -5465,7 +5465,14 @@ static void css_release_work_fn(struct work_struct *work)
|
||||
ss->css_released(css);
|
||||
|
||||
cgrp->nr_dying_subsys[ss->id]--;
|
||||
WARN_ON_ONCE(css->nr_descendants || cgrp->nr_dying_subsys[ss->id]);
|
||||
/*
|
||||
* When a css is released and ready to be freed, its
|
||||
* nr_descendants must be zero. However, the corresponding
|
||||
* cgrp->nr_dying_subsys[ss->id] may not be 0 if a subsystem
|
||||
* is activated and deactivated multiple times with one or
|
||||
* more of its previous activation leaving behind dying csses.
|
||||
*/
|
||||
WARN_ON_ONCE(css->nr_descendants);
|
||||
parent_cgrp = cgroup_parent(cgrp);
|
||||
while (parent_cgrp) {
|
||||
parent_cgrp->nr_dying_subsys[ss->id]--;
|
||||
|
Loading…
Reference in New Issue
Block a user