check_if_frozen() sounds like it should return something when in fact it's just
updating the freezer state.
Signed-off-by: Matt Helsley <[email protected]>
Cc: Andrew Morton <[email protected]>
---
kernel/cgroup_freezer.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
Index: linux-2.6.27-rc1-mm1/kernel/cgroup_freezer.c
===================================================================
--- linux-2.6.27-rc1-mm1.orig/kernel/cgroup_freezer.c
+++ linux-2.6.27-rc1-mm1/kernel/cgroup_freezer.c
@@ -201,8 +201,8 @@ static void freezer_fork(struct cgroup_s
/*
* caller must hold freezer->lock
*/
-static void check_if_frozen(struct cgroup *cgroup,
- struct freezer *freezer)
+static void update_freezer_state(struct cgroup *cgroup,
+ struct freezer *freezer)
{
struct cgroup_iter it;
struct task_struct *task;
@@ -222,6 +222,10 @@ static void check_if_frozen(struct cgrou
*/
if (nfrozen == ntotal)
freezer->state = CGROUP_FROZEN;
+ else if (nfrozen > 0)
+ freezer->state = CGROUP_FREEZING;
+ else
+ freezer->state = CGROUP_THAWED;
cgroup_iter_end(cgroup, &it);
}
@@ -240,7 +244,7 @@ static int freezer_read(struct cgroup *c
if (state == CGROUP_FREEZING) {
/* We change from FREEZING to FROZEN lazily if the cgroup was
* only partially frozen when we exitted write. */
- check_if_frozen(cgroup, freezer);
+ update_freezer_state(cgroup, freezer);
state = freezer->state;
}
spin_unlock_irq(&freezer->lock);
@@ -301,7 +305,7 @@ static int freezer_change_state(struct c
freezer = cgroup_freezer(cgroup);
spin_lock_irq(&freezer->lock);
- check_if_frozen(cgroup, freezer); /* may update freezer->state */
+ update_freezer_state(cgroup, freezer);
if (goal_state == freezer->state)
goto out;
switch (freezer->state) {
--