Messages in this thread | | | Date | Mon, 28 Dec 2020 09:31:20 +0100 | From | Jiri Olsa <> | Subject | Re: [PATCH 2/3] tools/lib/fs: Diet cgroupfs_find_mountpoint() |
| |
On Wed, Dec 16, 2020 at 06:05:55PM +0900, Namhyung Kim wrote:
SNIP
> + *p++ = '\0'; > > - while (token != NULL) { > - if (subsys && !strcmp(token, subsys)) { > - /* found */ > - fclose(fp); > + /* check filesystem type */ > + if (strncmp(p, "cgroup", 6)) > + continue; > > - if (strlen(mountpoint) < maxlen) { > - strcpy(buf, mountpoint); > - return 0; > - } > - return -1; > - } > - token = strtok_r(NULL, ",", &saved_ptr); > - } > + if (p[6] == '2') { > + /* save cgroup v2 path */ > + strcpy(mountpoint, path); > + continue; > } > > - if (!strcmp(type, "cgroup2")) > - strcpy(path_v2, mountpoint); > + /* now we have cgroup v1, check the options for subsystem */ > + p += 7; > + > + p = strstr(p, subsys);
not sure this is a real problem, but this would mixe up for cpu/cpuacct/cpuset no? we are using the function for perf_event subsys only, but it's globaly availble
jirka
> + if (p == NULL) > + continue; > + > + /* sanity check: it should be separated by a space or a comma */ > + if (!strchr(" ,", p[-1]) || !strchr(" ,", p[strlen(subsys)])) > + continue; > + > + strcpy(mountpoint, path); > + break; > } > + free(line); > fclose(fp); > > - if (path_v2[0] && strlen(path_v2) < maxlen) { > - strcpy(buf, path_v2); > + if (mountpoint[0] && strlen(mountpoint) < maxlen) { > + strcpy(buf, mountpoint); > return 0; > } > return -1; > -- > 2.29.2.684.gfbc64c5ab5-goog >
| |