RE: [PATCH v2 2/4] perf: Use CAP_SYS_ADMIN with perf_event_paranoid checks

From: Lubashev, Igor
Date: Wed Aug 07 2019 - 10:57:12 EST


On Wed, August 7 at 2019 7:46 AM Jiri Olsa wrote:
> 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@xxxxxxxxxx>
> > ---
> > 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(-)
> >
SNIP
> > --- 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

Mea culpa! (An artifact of a bad rebase.) Just learned to cross-compile. Thanks, Alexey and Jirka!

The v3 with the fix has been posted (https://lkml.kernel.org/lkml/cover.1565188228.git.ilubashe@xxxxxxxxxx).

- Igor