From: Christian Brauner Date: Tue, 16 Feb 2021 12:28:48 +0000 (+0100) Subject: cgroups: fail when no cgroup hierarchies are found X-Git-Tag: lxc-5.0.0~285^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c7b81439cecfbd885b3c10f9edfefdc1ac7c45b;p=thirdparty%2Flxc.git cgroups: fail when no cgroup hierarchies are found Signed-off-by: Christian Brauner --- diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index 6d7504e7e..b237b75a9 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -922,29 +922,6 @@ static int get_existing_subsystems(char ***klist, char ***nlist) return 0; } -static void lxc_cgfsng_print_hierarchies(struct cgroup_ops *ops) -{ - int i; - struct hierarchy **it; - - if (!ops->hierarchies) { - TRACE(" No hierarchies found"); - return; - } - - TRACE(" Hierarchies:"); - for (i = 0, it = ops->hierarchies; it && *it; it++, i++) { - int j; - char **cit; - - TRACE(" %d: base_cgroup: %s", i, (*it)->container_base_path ? (*it)->container_base_path : "(null)"); - TRACE(" mountpoint: %s", (*it)->mountpoint ? (*it)->mountpoint : "(null)"); - TRACE(" controllers:"); - for (j = 0, cit = (*it)->controllers; cit && *cit; cit++, j++) - TRACE(" %d: %s", j, *cit); - } -} - static void lxc_cgfsng_print_basecg_debuginfo(char *basecginfo, char **klist, char **nlist) { @@ -3465,9 +3442,6 @@ static int cg_hybrid_init(struct cgroup_ops *ops, bool relative, bool unprivileg } } - TRACE("Writable cgroup hierarchies:"); - lxc_cgfsng_print_hierarchies(ops); - /* verify that all controllers in cgroup.use and all crucial * controllers are accounted for */ diff --git a/src/lxc/cgroups/cgroup.c b/src/lxc/cgroups/cgroup.c index 1350e78c0..9ba7a1860 100644 --- a/src/lxc/cgroups/cgroup.c +++ b/src/lxc/cgroups/cgroup.c @@ -33,10 +33,14 @@ struct cgroup_ops *cgroup_init(struct lxc_conf *conf) if (!cgroup_ops) return log_error_errno(NULL, errno, "Failed to initialize cgroup driver"); + if (!cgroup_ops->hierarchies) { + cgroup_exit(cgroup_ops); + return log_error_errno(NULL, ENOENT, "No cgroup hierarchies found"); + } + if (cgroup_ops->data_init(cgroup_ops)) { cgroup_exit(cgroup_ops); - return log_error_errno(NULL, errno, - "Failed to initialize cgroup data"); + return log_error_errno(NULL, errno, "Failed to initialize cgroup data"); } TRACE("Initialized cgroup driver %s", cgroup_ops->driver);