Re: [PATCH] perf: allow non-privileged uprobe for user processes

From: Peter Zijlstra
Date: Tue May 07 2019 - 07:41:33 EST


On Tue, May 07, 2019 at 12:43:15AM -0700, Song Liu wrote:
> diff --git a/kernel/events/core.c b/kernel/events/core.c
> index abbd4b3b96c2..0508774d82e4 100644
> --- a/kernel/events/core.c
> +++ b/kernel/events/core.c
> @@ -8532,9 +8532,10 @@ static int perf_tp_event_match(struct perf_event *event,
> if (event->hw.state & PERF_HES_STOPPED)
> return 0;
> /*
> - * All tracepoints are from kernel-space.
> + * All tracepoints except uprobes are from kernel-space.
> */
> - if (event->attr.exclude_kernel)
> + if (event->attr.exclude_kernel &&
> + ((event->tp_event->flags & TRACE_EVENT_FL_UPROBE) == 0))

That doesn't make sense; should you not be checking user_mode(regs)
instead?