Messages in this thread | | | From | Namhyung Kim <> | Date | Tue, 29 Dec 2020 14:27:36 +0900 | Subject | Re: [PATCH 2/3] tools/lib/fs: Diet cgroupfs_find_mountpoint() |
| |
Hi Jiri,
On Mon, Dec 28, 2020 at 5:31 PM Jiri Olsa <jolsa@redhat.com> wrote: > > 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
Yeah, that's why I added the sanity check below. :)
> > > + 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;
Here.
Thanks, Namhyung
> > + > > + 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 > > >
| |