|
@@ -47,17 +47,20 @@ static inline struct freezer *task_freezer(struct task_struct *task)
|
|
|
struct freezer, css);
|
|
|
}
|
|
|
|
|
|
-int cgroup_frozen(struct task_struct *task)
|
|
|
+int cgroup_freezing_or_frozen(struct task_struct *task)
|
|
|
{
|
|
|
struct freezer *freezer;
|
|
|
enum freezer_state state;
|
|
|
|
|
|
task_lock(task);
|
|
|
freezer = task_freezer(task);
|
|
|
- state = freezer->state;
|
|
|
+ if (!freezer->css.cgroup->parent)
|
|
|
+ state = CGROUP_THAWED; /* root cgroup can't be frozen */
|
|
|
+ else
|
|
|
+ state = freezer->state;
|
|
|
task_unlock(task);
|
|
|
|
|
|
- return state == CGROUP_FROZEN;
|
|
|
+ return (state == CGROUP_FREEZING) || (state == CGROUP_FROZEN);
|
|
|
}
|
|
|
|
|
|
/*
|