Commit dda1bf8e authored by Igor Lubashev's avatar Igor Lubashev Committed by Arnaldo Carvalho de Melo

perf tools: Use CAP_SYS_ADMIN with perf_event_paranoid checks

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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Tested-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> # coresight part
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
Cc: James Morris <jmorris@namei.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1566869956-7154-3-git-send-email-ilubashe@akamai.comSigned-off-by: default avatarIgor Lubashev <ilubashe@akamai.com>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent e9a6882f
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "../../util/record.h" #include "../../util/record.h"
#include "../../util/auxtrace.h" #include "../../util/auxtrace.h"
#include "../../util/cpumap.h" #include "../../util/cpumap.h"
#include "../../util/event.h"
#include "../../util/evlist.h" #include "../../util/evlist.h"
#include "../../util/evsel.h" #include "../../util/evsel.h"
#include "../../util/pmu.h" #include "../../util/pmu.h"
...@@ -254,7 +255,7 @@ static int cs_etm_recording_options(struct auxtrace_record *itr, ...@@ -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 perf_pmu *cs_etm_pmu = ptr->cs_etm_pmu;
struct evsel *evsel, *cs_etm_evsel = NULL; struct evsel *evsel, *cs_etm_evsel = NULL;
struct perf_cpu_map *cpus = evlist->core.cpus; 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; int err = 0;
ptr->evlist = evlist; ptr->evlist = evlist;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <time.h> #include <time.h>
#include "../../util/cpumap.h" #include "../../util/cpumap.h"
#include "../../util/event.h"
#include "../../util/evsel.h" #include "../../util/evsel.h"
#include "../../util/evlist.h" #include "../../util/evlist.h"
#include "../../util/session.h" #include "../../util/session.h"
...@@ -67,7 +68,7 @@ static int arm_spe_recording_options(struct auxtrace_record *itr, ...@@ -67,7 +68,7 @@ static int arm_spe_recording_options(struct auxtrace_record *itr,
container_of(itr, struct arm_spe_recording, itr); container_of(itr, struct arm_spe_recording, itr);
struct perf_pmu *arm_spe_pmu = sper->arm_spe_pmu; struct perf_pmu *arm_spe_pmu = sper->arm_spe_pmu;
struct evsel *evsel, *arm_spe_evsel = NULL; struct evsel *evsel, *arm_spe_evsel = NULL;
bool privileged = geteuid() == 0 || perf_event_paranoid() < 0; bool privileged = perf_event_paranoid_check(-1);
struct evsel *tracking_evsel; struct evsel *tracking_evsel;
int err; int err;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/zalloc.h> #include <linux/zalloc.h>
#include "../../util/cpumap.h" #include "../../util/cpumap.h"
#include "../../util/event.h"
#include "../../util/evsel.h" #include "../../util/evsel.h"
#include "../../util/evlist.h" #include "../../util/evlist.h"
#include "../../util/session.h" #include "../../util/session.h"
...@@ -108,7 +109,7 @@ static int intel_bts_recording_options(struct auxtrace_record *itr, ...@@ -108,7 +109,7 @@ static int intel_bts_recording_options(struct auxtrace_record *itr,
struct perf_pmu *intel_bts_pmu = btsr->intel_bts_pmu; struct perf_pmu *intel_bts_pmu = btsr->intel_bts_pmu;
struct evsel *evsel, *intel_bts_evsel = NULL; struct evsel *evsel, *intel_bts_evsel = NULL;
const struct perf_cpu_map *cpus = evlist->core.cpus; const struct perf_cpu_map *cpus = evlist->core.cpus;
bool privileged = geteuid() == 0 || perf_event_paranoid() < 0; bool privileged = perf_event_paranoid_check(-1);
btsr->evlist = evlist; btsr->evlist = evlist;
btsr->snapshot_mode = opts->auxtrace_snapshot_mode; btsr->snapshot_mode = opts->auxtrace_snapshot_mode;
......
...@@ -579,7 +579,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, ...@@ -579,7 +579,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr,
bool have_timing_info, need_immediate = false; bool have_timing_info, need_immediate = false;
struct evsel *evsel, *intel_pt_evsel = NULL; struct evsel *evsel, *intel_pt_evsel = NULL;
const struct perf_cpu_map *cpus = evlist->core.cpus; const struct perf_cpu_map *cpus = evlist->core.cpus;
bool privileged = geteuid() == 0 || perf_event_paranoid() < 0; bool privileged = perf_event_paranoid_check(-1);
u64 tsc_bit; u64 tsc_bit;
int err; int err;
......
...@@ -282,7 +282,7 @@ struct evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx) ...@@ -282,7 +282,7 @@ struct evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx)
static bool perf_event_can_profile_kernel(void) static bool perf_event_can_profile_kernel(void)
{ {
return geteuid() == 0 || perf_event_paranoid() == -1; return perf_event_paranoid_check(-1);
} }
struct evsel *perf_evsel__new_cycles(bool precise) struct evsel *perf_evsel__new_cycles(bool precise)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment