aboutsummaryrefslogtreecommitdiff
path: root/kernel/cgroup/legacy_freezer.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <[email protected]>2023-12-11 08:39:35 +0100
committerGreg Kroah-Hartman <[email protected]>2023-12-11 08:39:35 +0100
commit0e42b5fee8a8c5bc173f702b0745da6d9329c714 (patch)
treea71b0daded5764fcc33b88f9344872c13f4b488e /kernel/cgroup/legacy_freezer.c
parent386a766c4169006d0e9df44823849930b8995e32 (diff)
parenta39b6ac3781d46ba18193c9dbb2110f31e9bffe9 (diff)
Merge 6.7-rc5 into char-misc-next
We need the char/misc fixes in here as well for testing and to build off of. Signed-off-by: Greg Kroah-Hartman <[email protected]>
Diffstat (limited to 'kernel/cgroup/legacy_freezer.c')
-rw-r--r--kernel/cgroup/legacy_freezer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c
index 122dacb3a443..66d1708042a7 100644
--- a/kernel/cgroup/legacy_freezer.c
+++ b/kernel/cgroup/legacy_freezer.c
@@ -66,9 +66,15 @@ static struct freezer *parent_freezer(struct freezer *freezer)
bool cgroup_freezing(struct task_struct *task)
{
bool ret;
+ unsigned int state;
rcu_read_lock();
- ret = task_freezer(task)->state & CGROUP_FREEZING;
+ /* Check if the cgroup is still FREEZING, but not FROZEN. The extra
+ * !FROZEN check is required, because the FREEZING bit is not cleared
+ * when the state FROZEN is reached.
+ */
+ state = task_freezer(task)->state;
+ ret = (state & CGROUP_FREEZING) && !(state & CGROUP_FROZEN);
rcu_read_unlock();
return ret;