Re: [PATCH v2] tracing/uprobe: Add missing PID filter for uretprobe
From: Oleg Nesterov <oleg@redhat.com>
Date: 2024-08-27 16:46:02
Also in:
bpf
On 08/27, Jiri Olsa wrote:
On Tue, Aug 27, 2024 at 12:29:38AM +0200, Oleg Nesterov wrote:quoted
So, can you reproduce the problem reported by Tianyi on your setup?yes, I can repduce the issue with uretprobe on top of perf event uprobe
...
-> 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
Confused...
I naively thought that if bpftrace uses bpf_uprobe_multi_link_attach() then
it won't use perf/trace_uprobe, and uretprobe-hit will result in
// current->pid == 1018
for_each_uprobe_consumer {
// consumer for task 1019
uprobe_multi_link_ret_handler
uprobe_prog_run
-> current->mm != link->task->mm, return
// consumer for task 1018
uprobe_multi_link_ret_handler
uprobe_prog_run
-> current->mm == link->task->mm, run bpf
}
I think the uretprobe_dispatcher could call filter as suggested in the original patch..
OK, agreed.
but I'm not sure we need to remove the uprobe from handle_uretprobe_chain like we do in handler_chain..
Me too. In any case this is another issue. Oleg.