Messages in this thread | | | Date | Wed, 7 Aug 2019 13:46:02 +0200 | From | Jiri Olsa <> | Subject | Re: [PATCH v2 2/4] perf: Use CAP_SYS_ADMIN with perf_event_paranoid checks |
| |
On Tue, Aug 06, 2019 at 11:35:55PM -0400, Igor Lubashev wrote: > The kernel is using CAP_SYS_ADMIN instead of euid==0 to override > perf_event_paranoid check. Make perf do the same. > > Signed-off-by: Igor Lubashev <ilubashe@akamai.com> > --- > tools/perf/arch/arm/util/cs-etm.c | 3 ++- > tools/perf/arch/arm64/util/arm-spe.c | 4 ++-- > tools/perf/arch/x86/util/intel-bts.c | 3 ++- > tools/perf/arch/x86/util/intel-pt.c | 2 +- > tools/perf/util/evsel.c | 2 +- > 5 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c > index 5cb07e8cb296..b87a1ca2968f 100644 > --- a/tools/perf/arch/arm/util/cs-etm.c > +++ b/tools/perf/arch/arm/util/cs-etm.c > @@ -18,6 +18,7 @@ > #include "../../perf.h" > #include "../../util/auxtrace.h" > #include "../../util/cpumap.h" > +#include "../../util/event.h" > #include "../../util/evlist.h" > #include "../../util/evsel.h" > #include "../../util/pmu.h" > @@ -254,7 +255,7 @@ static int cs_etm_recording_options(struct auxtrace_record *itr, > struct perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu; > struct evsel *evsel, *cs_etm_evsel = NULL; > struct perf_cpu_map *cpus = evlist->core.cpus; > - bool privileged = (geteuid() == 0 || perf_event_paranoid() < 0); > + bool privileged = perf_event_paranoid_check(-1); > int err = 0; > > ptr->evlist = evlist; > diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/util/arm-spe.c > index 00915b8fd05b..200bc973371b 100644 > --- a/tools/perf/arch/arm64/util/arm-spe.c > +++ b/tools/perf/arch/arm64/util/arm-spe.c > @@ -12,6 +12,7 @@ > #include <time.h> > > #include "../../util/cpumap.h" > +#include "../../util/event.h" > #include "../../util/evsel.h" > #include "../../util/evlist.h" > #include "../../util/session.h" > @@ -65,8 +66,7 @@ static int arm_spe_recording_options(struct auxtrace_record *itr, > struct arm_spe_recording *sper = > container_of(itr, struct arm_spe_recording, itr); > struct perf_pmu *arm_spe_pmu = sper->arm_spe_pmu; > - struct evsel *evsel, *arm_spe_evsel = NULL;
wouldn't this removal break the compilation on arm?
jirka
> - bool privileged = geteuid() == 0 || perf_event_paranoid() < 0; > + bool privileged = perf_event_paranoid_check(-1); > struct evsel *tracking_evsel; > int err;
SNIP
| |