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?