summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-01-09 17:30:31 +0100
committerThe Plumber <50238977+systemd-rhel-bot@users.noreply.github.com>2020-04-15 16:05:32 +0200
commit88e03493cc361628315cd4c948a6bfd01f1d3a45 (patch)
treebf074b7a4974b881eef7703412ddd60a06a19366
parent061330ee69c102b0acecec6bccacfd7080a8c378 (diff)
downloadsystemd-88e03493cc361628315cd4c948a6bfd01f1d3a45.tar.gz
core: fix re-realization of cgroup siblings
This is a fix-up for eef85c4a3f8054d29383a176f6cebd1ef3a15b9a which broke this. Tracked down by @w-simon Fixes: #14453 (cherry picked from commit 65f6b6bdcb500c576674b5838e4cc4c35e18bfde) Related: #1824129
-rw-r--r--src/core/cgroup.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 664d269483..3f7665b755 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -1796,32 +1796,25 @@ unsigned manager_dispatch_cgroup_realize_queue(Manager *m) {
static void unit_add_siblings_to_cgroup_realize_queue(Unit *u) {
Unit *slice;
- /* This adds the siblings of the specified unit and the
- * siblings of all parent units to the cgroup queue. (But
- * neither the specified unit itself nor the parents.) */
+ /* This adds the siblings of the specified unit and the siblings of all parent units to the cgroup
+ * queue. (But neither the specified unit itself nor the parents.) */
while ((slice = UNIT_DEREF(u->slice))) {
Iterator i;
Unit *m;
void *v;
- HASHMAP_FOREACH_KEY(v, m, u->dependencies[UNIT_BEFORE], i) {
- if (m == u)
- continue;
-
- /* Skip units that have a dependency on the slice
- * but aren't actually in it. */
+ HASHMAP_FOREACH_KEY(v, m, slice->dependencies[UNIT_BEFORE], i) {
+ /* Skip units that have a dependency on the slice but aren't actually in it. */
if (UNIT_DEREF(m->slice) != slice)
continue;
- /* No point in doing cgroup application for units
- * without active processes. */
+ /* No point in doing cgroup application for units without active processes. */
if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(m)))
continue;
- /* If the unit doesn't need any new controllers
- * and has current ones realized, it doesn't need
- * any changes. */
+ /* If the unit doesn't need any new controllers and has current ones realized, it
+ * doesn't need any changes. */
if (unit_has_mask_realized(m,
unit_get_target_mask(m),
unit_get_enable_mask(m),