linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/10] Move uid filtering to BPF filters
@ 2025-06-04 17:45 Ian Rogers
  2025-06-04 17:45 ` [PATCH v4 01/10] perf parse-events filter: Use evsel__find_pmu Ian Rogers
                   ` (11 more replies)
  0 siblings, 12 replies; 16+ messages in thread
From: Ian Rogers @ 2025-06-04 17:45 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
	Ian Rogers, Adrian Hunter, Kan Liang, James Clark, Dapeng Mi,
	Thomas Richter, Veronika Molnarova, Chun-Tse Shao, Leo Yan,
	Hao Ge, Howard Chu, Weilin Wang, Levi Yun, Dr. David Alan Gilbert,
	Gautam Menghani, Tengda Wu, linux-perf-users, linux-kernel, bpf

Rather than scanning /proc and skipping PIDs based on their UIDs, use
BPF filters for uid filtering. The /proc scanning in thread_map is
racy as the PID may exit before the perf_event_open causing perf to
abort. BPF UID filters are more robust as they avoid the race. The
/proc scanning also misses processes starting after the perf
command. Add a helper for commands that support UID filtering and wire
up. Remove the non-BPF UID filtering support given it doesn't work.

v4: Add a warning message on top of Namhyung's BPF filter error message:
https://lore.kernel.org/lkml/20250604054234.23608-1-namhyung@kernel.org/
    in the parse_uid_filter helper. In TUI the warning is shown then
    the BPF error shown, with stdio the warning appears below the BPF
    errors.

v3: Add lengthier commit messages as requested by Arnaldo. Rebase on
    tmp.perf-tools-next.

v2: Add a perf record uid test (Namhyung) and force setting
    system-wide for perf trace and perf record (Namhyung). Ensure the
    uid filter isn't set on tracepoint evsels.

v1: https://lore.kernel.org/lkml/20250111190143.1029906-1-irogers@google.com/

Ian Rogers (10):
  perf parse-events filter: Use evsel__find_pmu
  perf target: Separate parse_uid into its own function
  perf parse-events: Add parse_uid_filter helper
  perf record: Switch user option to use BPF filter
  perf tests record: Add basic uid filtering test
  perf top: Switch user option to use BPF filter
  perf trace: Switch user option to use BPF filter
  perf bench evlist-open-close: Switch user option to use BPF filter
  perf target: Remove uid from target
  perf thread_map: Remove uid options

 tools/perf/bench/evlist-open-close.c        | 36 ++++++++------
 tools/perf/builtin-ftrace.c                 |  1 -
 tools/perf/builtin-kvm.c                    |  2 -
 tools/perf/builtin-record.c                 | 27 ++++++-----
 tools/perf/builtin-stat.c                   |  4 +-
 tools/perf/builtin-top.c                    | 22 +++++----
 tools/perf/builtin-trace.c                  | 27 +++++++----
 tools/perf/tests/backward-ring-buffer.c     |  1 -
 tools/perf/tests/event-times.c              |  8 ++-
 tools/perf/tests/keep-tracking.c            |  2 +-
 tools/perf/tests/mmap-basic.c               |  2 +-
 tools/perf/tests/openat-syscall-all-cpus.c  |  2 +-
 tools/perf/tests/openat-syscall-tp-fields.c |  1 -
 tools/perf/tests/openat-syscall.c           |  2 +-
 tools/perf/tests/perf-record.c              |  1 -
 tools/perf/tests/perf-time-to-tsc.c         |  2 +-
 tools/perf/tests/shell/record.sh            | 26 ++++++++++
 tools/perf/tests/switch-tracking.c          |  2 +-
 tools/perf/tests/task-exit.c                |  1 -
 tools/perf/tests/thread-map.c               |  2 +-
 tools/perf/util/bpf-filter.c                |  2 +-
 tools/perf/util/evlist.c                    |  3 +-
 tools/perf/util/parse-events.c              | 47 +++++++++++++-----
 tools/perf/util/parse-events.h              |  1 +
 tools/perf/util/python.c                    | 10 ++--
 tools/perf/util/target.c                    | 54 +++------------------
 tools/perf/util/target.h                    | 15 ++----
 tools/perf/util/thread_map.c                | 32 ++----------
 tools/perf/util/thread_map.h                |  6 +--
 tools/perf/util/top.c                       |  4 +-
 tools/perf/util/top.h                       |  1 +
 31 files changed, 164 insertions(+), 182 deletions(-)

-- 
2.50.0.rc0.604.gd4ff7b7c86-goog


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2025-06-10 18:39 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-04 17:45 [PATCH v4 00/10] Move uid filtering to BPF filters Ian Rogers
2025-06-04 17:45 ` [PATCH v4 01/10] perf parse-events filter: Use evsel__find_pmu Ian Rogers
2025-06-04 17:45 ` [PATCH v4 02/10] perf target: Separate parse_uid into its own function Ian Rogers
2025-06-04 17:45 ` [PATCH v4 03/10] perf parse-events: Add parse_uid_filter helper Ian Rogers
2025-06-06 17:41   ` Namhyung Kim
2025-06-06 18:13     ` Ian Rogers
2025-06-06 20:01       ` Namhyung Kim
2025-06-04 17:45 ` [PATCH v4 04/10] perf record: Switch user option to use BPF filter Ian Rogers
2025-06-04 17:45 ` [PATCH v4 05/10] perf tests record: Add basic uid filtering test Ian Rogers
2025-06-04 17:45 ` [PATCH v4 06/10] perf top: Switch user option to use BPF filter Ian Rogers
2025-06-04 17:45 ` [PATCH v4 07/10] perf trace: " Ian Rogers
2025-06-04 17:45 ` [PATCH v4 08/10] perf bench evlist-open-close: " Ian Rogers
2025-06-04 17:45 ` [PATCH v4 09/10] perf target: Remove uid from target Ian Rogers
2025-06-04 17:45 ` [PATCH v4 10/10] perf thread_map: Remove uid options Ian Rogers
2025-06-06  2:44 ` [PATCH v4 00/10] Move uid filtering to BPF filters Namhyung Kim
2025-06-10 18:38 ` Namhyung Kim

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).