--- procps-3.2.8/ps/output.c 2010-05-18 06:00:18.000000000 +0200 +++ procps-3.2.8.lennart/ps/output.c 2010-05-18 05:59:46.000000000 +0200 @@ -1109,7 +1109,7 @@ static int pr_cgroup(char *restrict const outbuf, const proc_t *restrict const pp){ char filename[48]; FILE *fd; - int counter = 0; + int counter = 0, last_begin = 0, slash = 0; int c; int is_cgroup = 0; @@ -1121,15 +1121,22 @@ if (is_cgroup == 0) { if (c == ':') { is_cgroup = 1; + slash = 0; if (counter>0) outbuf[counter++]=';'; } }else - if ((c == '\n') || (c == '\0')) - is_cgroup = 0; + if ((c == '\n') || (c == '\0')){ + if (slash) /* if the last char was a / this process is in the root cgroup which we should suppress */ + counter = last_begin; else + last_begin = counter; + is_cgroup = 0; + } else { + slash = c == '/'; outbuf[counter++]=c; } + } outbuf[counter]='\0'; close(fd); if (counter>0)