From 106f1f38ef964d88c204ae8d25156fe889a94625 Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Sat, 24 Feb 2018 21:36:20 +0100 Subject: [PATCH] cgfsng: fix get_hierarchy() for unified hierarchy Signed-off-by: Christian Brauner --- src/lxc/cgroups/cgfsng.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index b614a094d..08b49ede3 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -327,7 +327,7 @@ struct hierarchy *get_hierarchy(const char *c) !hierarchies[i]->controllers[0]) return hierarchies[i]; - return NULL; + continue; } if (string_in_list(hierarchies[i]->controllers, c)) @@ -1306,8 +1306,11 @@ static bool cg_hybrid_init(void) controller_list = cg_unified_get_controllers(cgv2_ctrl_path); free(cgv2_ctrl_path); - if (!controller_list) + if (!controller_list) { controller_list = cg_unified_make_empty_controller(); + CGFSNG_DEBUG("No controllers are enabled for " + "delegation in the unified hierarchy\n"); + } } new = add_hierarchy(controller_list, mountpoint, base_cgroup, type); @@ -2365,13 +2368,16 @@ static bool cgfsng_unfreeze(void *hdata) return true; } -static const char *cgfsng_get_cgroup(void *hdata, const char *subsystem) +static const char *cgfsng_get_cgroup(void *hdata, const char *controller) { struct hierarchy *h; - h = get_hierarchy(subsystem); - if (!h) + h = get_hierarchy(controller); + if (!h) { + SYSERROR("Failed to find hierarchy for controller \"%s\"", + controller ? controller : "(null)"); return NULL; + } return h->fullcgpath ? h->fullcgpath + strlen(h->mountpoint) : NULL; } -- 2.47.2