From: Jan Safranek Date: Thu, 2 Dec 2010 14:00:40 +0000 (+0100) Subject: There is a bogus test in cgroup_get_parent_name X-Git-Tag: v0.37~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a326637e32621b6776e22d0a0c4f5996c54746f3;p=thirdparty%2Flibcgroup.git There is a bogus test in cgroup_get_parent_name which returns error in situation when 0 should be return. This causes problem e.g. when a hierarchy is mounted to two mount points. CHANGELOG: - the test is not removed but moved to the else part EXAMPLE: $ cat aux.conf mount { cpu = /cgroup/cpu; cpuacct = /cgroup/cpu; memory = /cgroup/memory; } group hXAjiy/wWRq { cpu {} memory {} } $ mkdir /mnt/cgroups/cpu 2>/dev/null $ mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu $ time cgconfigparser -l aux.conf $ cgclear $ cat /proc/cgroups OLD output #subsys_name hierarchy num_cgroups enabled cpuset 0 1 1 ns 0 1 1 cpu 301 1 1 cpuacct 301 1 1 memory 303 3 1 devices 0 1 1 freezer 0 1 1 net_cls 0 1 1 blkio 0 1 1 New output #subsys_name hierarchy num_cgroups enabled cpuset 0 1 1 ns 0 1 1 cpu 0 1 1 cpuacct 0 1 1 memory 0 1 1 devices 0 1 1 freezer 0 1 1 net_cls 0 1 1 blkio 0 1 1 Signed-off-by: Ivana Hutarova Varekova Acked-by: Dhaval Giani Acked-by: Jan Safranek Acked-by: Balbir Singh Signed-off-by: Jan Safranek --- diff --git a/src/api.c b/src/api.c index a51230bd..7e2903dc 100644 --- a/src/api.c +++ b/src/api.c @@ -1512,12 +1512,11 @@ static int cgroup_get_parent_name(struct cgroup *cgroup, char **parent) } else { *parent = strdup(pdir); + if (*parent == NULL) + ret = ECGFAIL; } free(dir); - if (*parent == NULL) - ret = ECGFAIL; - return ret; }