The existing freezer propagation logic improperly reduces nr_frozen_descendants by an increasing 'desc' counter during unfreeze, leading to: - Premature parent cgroup unfreezing - Negative descendant counts - Broken hierarchy state consistency Scenario demonstrating the bug: 1. Create hierarchy A->B->C 2. Freeze C (A/B freeze via propagation) 3. Freeze A->D (separate branch) 4. Unfreeze C -> A incorrectly unfreezes despite frozen D Fixes: 711f763 ("freezer,cgroup: add freezer.stats subsystem") Signed-off-by: Umar cynexium@xxxxxxxxx --- kernel/cgroup/freezer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/cgroup/freezer.c b/kernel/cgroup/freezer.c index e9c15fbe5d9b..d384df2f53c2 100644 --- a/kernel/cgroup/freezer.c +++ b/kernel/cgroup/freezer.c @@ -304,6 +304,7 @@ void cgroup_freeze(struct cgroup *cgrp, bool freeze) */ if (dsct->freezer.e_freeze > 0) continue; + WARN_ON_ONCE(dsct->freezer.e_freeze < 0); } -- 2.47.1