linux-stable/tools/lib/api/fs
Ian Rogers 97d5f2e9ee tools api fs: More thread safety for global filesystem variables
Multiple threads, such as with "perf top", may race to initialize a
file system path like hugetlbfs. The racy initialization of the path
leads to at least memory leaks. To avoid this initialize each fs for
reading the mount point path with pthread_once.

Mounting the file system may also be racy, so introduce a mutex over
the function. This does mean that the path is being accessed with and
without a mutex, which is inherently racy but hopefully benign,
especially as there are fewer callers to fs__mount.

Remove the fs__entries by directly using global variables, this was
done as no argument like the index can be passed to the init once
routine.

Issue found and tested with "perf top" and address sanitizer.

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20230609224004.180988-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2023-06-13 23:40:32 -03:00
..
Build tools lib api fs: Move cgroupsfs_find_mountpoint() 2020-03-04 10:34:09 -03:00
cgroup.c tools api fs: Dynamically allocate cgroupfs mount point cache, removing 4128 bytes from .bss 2023-05-28 10:25:25 -03:00
fs.c tools api fs: More thread safety for global filesystem variables 2023-06-13 23:40:32 -03:00
fs.h tools api fs: Make xxx__mountpoint() more scalable 2020-04-16 12:19:12 -03:00
tracing_path.c tools lib api fs tracing_path: Remove two unused MAX_PATH paths 2023-05-28 10:23:00 -03:00
tracing_path.h tools lib api fs tracing_path: Add scandir alphasort 2022-11-15 10:24:09 -03:00