static int do_lxcapi_get_cgroup_item(struct lxc_container *c, const char *subsys, char *retv, int inlen)
{
+ int ret;
+
call_cleaner(cgroup_exit) struct cgroup_ops *cgroup_ops = NULL;
if (!c)
if (is_stopped(c))
return -1;
- cgroup_ops = cgroup_init(c->lxc_conf);
- if (!cgroup_ops)
- return -1;
+ ret = cgroup_get(c->lxc_conf, subsys, retv, inlen, c->name, c->config_path);
+ if (ret == ENOCGROUP2) {
+ cgroup_ops = cgroup_init(c->lxc_conf);
+ if (!cgroup_ops)
+ return -1;
+
+ return cgroup_ops->get(cgroup_ops, subsys, retv, inlen, c->name, c->config_path);
+ }
- return cgroup_ops->get(cgroup_ops, subsys, retv, inlen, c->name,
- c->config_path);
+ return ret;
}
WRAP_API_3(int, lxcapi_get_cgroup_item, const char *, char *, int)