From: Mike Yuan Date: Mon, 15 Jul 2024 18:32:47 +0000 (+0200) Subject: core/cgroup: replace hardcoded state set with freezer_state_finish() X-Git-Tag: v257-rc1~888^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=27344f9acf7b23225020cc4a2d63d5e10d35308f;p=thirdparty%2Fsystemd.git core/cgroup: replace hardcoded state set with freezer_state_finish() This makes code simpler and more readable. --- diff --git a/src/core/cgroup.c b/src/core/cgroup.c index e370a04b8f6..8abfd31c7b5 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -5131,10 +5131,11 @@ int unit_cgroup_freezer_action(Unit *u, FreezerAction action) { if (current == objective) next = freezer_state_finish(next); - else if (IN_SET(next, FREEZER_FROZEN, FREEZER_FROZEN_BY_PARENT, FREEZER_RUNNING)) { - /* We're transitioning into a finished state, which implies that the cgroup's - * current state already matches the objective and thus we'd return 0. But, reality - * shows otherwise. This indicates that our freezer_state tracking has diverged + else if (next == freezer_state_finish(next)) { + /* We're directly transitioning into a finished state, which in theory means that + * the cgroup's current state already matches the objective and thus we'd return 0. + * But, reality shows otherwise (such case would have been handled by current == objective + * branch above). This indicates that our freezer_state tracking has diverged * from the real state of the cgroup, which can happen if someone meddles with the * cgroup from underneath us. This really shouldn't happen during normal operation, * though. So, let's warn about it and fix up the state to be valid */