release 6.15.3
This commit is contained in:
64
debian/patches/patchset-pf/fixes/0044-cgroup-freezer-fix-incomplete-freezing-when-attachin.patch
vendored
Normal file
64
debian/patches/patchset-pf/fixes/0044-cgroup-freezer-fix-incomplete-freezing-when-attachin.patch
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
From 6e492900893c011cbe13fbb881cf1e11df08982b Mon Sep 17 00:00:00 2001
|
||||
From: Chen Ridong <chenridong@huawei.com>
|
||||
Date: Wed, 18 Jun 2025 07:32:17 +0000
|
||||
Subject: cgroup,freezer: fix incomplete freezing when attaching tasks
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
An issue was found:
|
||||
|
||||
# cd /sys/fs/cgroup/freezer/
|
||||
# mkdir test
|
||||
# echo FROZEN > test/freezer.state
|
||||
# cat test/freezer.state
|
||||
FROZEN
|
||||
# sleep 1000 &
|
||||
[1] 863
|
||||
# echo 863 > test/cgroup.procs
|
||||
# cat test/freezer.state
|
||||
FREEZING
|
||||
|
||||
When tasks are migrated to a frozen cgroup, the freezer fails to
|
||||
immediately freeze the tasks, causing the cgroup to remain in the
|
||||
"FREEZING".
|
||||
|
||||
The freeze_task() function is called before clearing the CGROUP_FROZEN
|
||||
flag. This causes the freezing() check to incorrectly return false,
|
||||
preventing __freeze_task() from being invoked for the migrated task.
|
||||
|
||||
To fix this issue, clear the CGROUP_FROZEN state before calling
|
||||
freeze_task().
|
||||
|
||||
Fixes: f5d39b020809 ("freezer,sched: Rewrite core freezer logic")
|
||||
Cc: stable@vger.kernel.org # v6.1+
|
||||
Reported-by: Zhong Jiawei <zhongjiawei1@huawei.com>
|
||||
Signed-off-by: Chen Ridong <chenridong@huawei.com>
|
||||
Acked-by: Michal Koutný <mkoutny@suse.com>
|
||||
Signed-off-by: Tejun Heo <tj@kernel.org>
|
||||
---
|
||||
kernel/cgroup/legacy_freezer.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c
|
||||
index 039d1eb2f215..507b8f19a262 100644
|
||||
--- a/kernel/cgroup/legacy_freezer.c
|
||||
+++ b/kernel/cgroup/legacy_freezer.c
|
||||
@@ -188,13 +188,12 @@ static void freezer_attach(struct cgroup_taskset *tset)
|
||||
if (!(freezer->state & CGROUP_FREEZING)) {
|
||||
__thaw_task(task);
|
||||
} else {
|
||||
- freeze_task(task);
|
||||
-
|
||||
/* clear FROZEN and propagate upwards */
|
||||
while (freezer && (freezer->state & CGROUP_FROZEN)) {
|
||||
freezer->state &= ~CGROUP_FROZEN;
|
||||
freezer = parent_freezer(freezer);
|
||||
}
|
||||
+ freeze_task(task);
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.50.0
|
||||
|
Reference in New Issue
Block a user