Re: [PATCH v2] tracing/uprobe: Add missing PID filter for uretprobe

Oleg Nesterov
2024-08-27T20:20:55Z

Sorry for another reply, I just noticed I missed one part of your email...

On 08/27, Jiri Olsa wrote:
>
> -> uretprobe-hit
> handle_swbp
> uprobe_handle_trampoline
> handle_uretprobe_chain
> {
>
> for_each_uprobe_consumer {
>
> // consumer for task 1019
> uretprobe_dispatcher
> uretprobe_perf_func
> -> runs bpf program
>
> // consumer for task 1018
> uretprobe_dispatcher
> uretprobe_perf_func
> -> runs bpf program
>
> }
> }
>
> and I think the same will happen for perf record in this case where instead of
> running the program we will execute perf_tp_event

Hmm. Really? In this case these 2 different consumers will have the different
trace_event_call's, so

// consumer for task 1019
uretprobe_dispatcher
uretprobe_perf_func
__uprobe_perf_func
perf_tp_event

won't store the event because this_cpu_ptr(call->perf_events) should be
hlist_empty() on this CPU, the perf_event for task 1019 wasn't scheduled in
on this CPU...

No?

Ok, looks like I'm totally confused ;)

Oleg.