From b99b76b0458b0a363a4efd913bccbc9e2daa50a0 Mon Sep 17 00:00:00 2001 From: Cyrill Gorcunov Date: Tue, 16 Sep 2014 00:17:00 +0400 Subject: [PATCH] cg: proc_parse -- Don't compare cgroup paths When we compare sets in cg_set_compare() we presume that controller names are properly sorted but because of use of strcmp(cc->path, path) it's not true. In particular in case if there are two same sets which differ in paths only (00.126812) cg: `- New css ID 2 (00.127051) cg: `- [memory] -> [/vz-1] (00.127079) cg: `- [name=systemd] -> [/vz-1] (00.127108) cg: `- [net_cls] -> [/vz-1] (00.239829) cg: `- New css ID 3 (00.240067) cg: `- [memory] -> [/vz-1] (00.240096) cg: `- [net_cls] -> [/vz-1] (00.240154) cg: `- [name=systemd] -> [/vz-1/system.slice/dbus.service] we currently refuse to dump such configuretion. Thus remove path comparision from the first place. CC: Tycho Andersen Signed-off-by: Cyrill Gorcunov Acked-by: Tycho Andersen Acked-by: Andrew Vagin Signed-off-by: Pavel Emelyanov --- proc_parse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proc_parse.c b/proc_parse.c index 39cc543ea..e311f40a4 100644 --- a/proc_parse.c +++ b/proc_parse.c @@ -1729,7 +1729,7 @@ int parse_task_cgroup(int pid, struct list_head *retl, unsigned int *n) } list_for_each_entry(cc, retl, l) - if (strcmp(cc->name, name) >= 0 && strcmp(cc->path, path) >= 0) + if (strcmp(cc->name, name) >= 0) break; list_add_tail(&ncc->l, &cc->l);