aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/cgroup_freezer.c9
-rw-r--r--kernel/power/process.c2
2 files changed, 7 insertions, 4 deletions
diff --git a/kernel/cgroup_freezer.c b/kernel/cgroup_freezer.c
index 59e9ef6aab40..eb3f34d57419 100644
--- a/kernel/cgroup_freezer.c
+++ b/kernel/cgroup_freezer.c
@@ -47,17 +47,20 @@ static inline struct freezer *task_freezer(struct task_struct *task)
47 struct freezer, css); 47 struct freezer, css);
48} 48}
49 49
50int cgroup_frozen(struct task_struct *task) 50int cgroup_freezing_or_frozen(struct task_struct *task)
51{ 51{
52 struct freezer *freezer; 52 struct freezer *freezer;
53 enum freezer_state state; 53 enum freezer_state state;
54 54
55 task_lock(task); 55 task_lock(task);
56 freezer = task_freezer(task); 56 freezer = task_freezer(task);
57 state = freezer->state; 57 if (!freezer->css.cgroup->parent)
58 state = CGROUP_THAWED; /* root cgroup can't be frozen */
59 else
60 state = freezer->state;
58 task_unlock(task); 61 task_unlock(task);
59 62
60 return state == CGROUP_FROZEN; 63 return (state == CGROUP_FREEZING) || (state == CGROUP_FROZEN);
61} 64}
62 65
63/* 66/*
diff --git a/kernel/power/process.c b/kernel/power/process.c
index 5ade1bdcf366..de5301557774 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -145,7 +145,7 @@ static void thaw_tasks(bool nosig_only)
145 if (nosig_only && should_send_signal(p)) 145 if (nosig_only && should_send_signal(p))
146 continue; 146 continue;
147 147
148 if (cgroup_frozen(p)) 148 if (cgroup_freezing_or_frozen(p))
149 continue; 149 continue;
150 150
151 thaw_process(p); 151 thaw_process(p);