Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51308ee5 authored by Li Zefan's avatar Li Zefan Committed by Linus Torvalds
Browse files

freezer_cg: simplify freezer_change_state()



Just call unfreeze_cgroup() if goal_state == THAWED, and call
try_to_freeze_cgroup() if goal_state == FROZEN.

No behavior has been changed.

Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Acked-by: default avatarCedric Le Goater <clg@fr.ibm.com>
Acked-by: default avatarMatt Helsley <matthltc@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 00c2e63c
Loading
Loading
Loading
Loading
+7 −12
Original line number Original line Diff line number Diff line
@@ -296,27 +296,22 @@ static int freezer_change_state(struct cgroup *cgroup,
	int retval = 0;
	int retval = 0;


	freezer = cgroup_freezer(cgroup);
	freezer = cgroup_freezer(cgroup);

	spin_lock_irq(&freezer->lock);
	spin_lock_irq(&freezer->lock);

	update_freezer_state(cgroup, freezer);
	update_freezer_state(cgroup, freezer);
	if (goal_state == freezer->state)
	if (goal_state == freezer->state)
		goto out;
		goto out;
	switch (freezer->state) {

	switch (goal_state) {
	case CGROUP_THAWED:
	case CGROUP_THAWED:
		retval = try_to_freeze_cgroup(cgroup, freezer);
		unfreeze_cgroup(cgroup, freezer);
		break;
	case CGROUP_FREEZING:
		if (goal_state == CGROUP_FROZEN) {
			/* Userspace is retrying after
			 * "/bin/echo FROZEN > freezer.state" returned -EBUSY */
			retval = try_to_freeze_cgroup(cgroup, freezer);
		break;
		break;
		}
		/* state == FREEZING and goal_state == THAWED, so unfreeze */
	case CGROUP_FROZEN:
	case CGROUP_FROZEN:
		unfreeze_cgroup(cgroup, freezer);
		retval = try_to_freeze_cgroup(cgroup, freezer);
		break;
		break;
	default:
	default:
		break;
		BUG();
	}
	}
out:
out:
	spin_unlock_irq(&freezer->lock);
	spin_unlock_irq(&freezer->lock);