perf cap: Tidy up and improve capability testing
authorIan Rogers <irogers@google.com>
Tue, 6 Aug 2024 22:06:14 +0000 (15:06 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 20 Aug 2024 20:53:12 +0000 (17:53 -0300)
commite25ebda78e230283bf707ae3e9655270ff40a7f9
tree74d714be33a29f0e33bdfcc9f9030207d972318e
parent8b1042c425f6a5a9fb57c5e1d5ecf5247cf899a6
perf cap: Tidy up and improve capability testing

Remove dependence on libcap. libcap is only used to query whether a
capability is supported, which is just 1 capget system call.

If the capget system call fails, fall back on root permission
checking. Previously if libcap fails then the permission is assumed
not present which may be pessimistic/wrong.

Add a used_root out argument to perf_cap__capable to say whether the
fall back root check was used. This allows the correct error message,
"root" vs "users with the CAP_PERFMON or CAP_SYS_ADMIN capability", to
be selected.

Tidy uses of perf_cap__capable so that tests aren't repeated if capget
isn't supported.

Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Changbin Du <changbin.du@huawei.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linux.dev>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240806220614.831914-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Makefile.config
tools/perf/builtin-ftrace.c
tools/perf/util/Build
tools/perf/util/cap.c
tools/perf/util/cap.h
tools/perf/util/symbol.c
tools/perf/util/util.c