On Mon, Sep 06, 2024 at 18:43:00AM +0800, Jiri Olsa wrote: SNIP > > > --------------------------------------------------------------------------- > > > Now lets return to BPF and this particular problem. I won't really argue > > > with this patch, but > > > > > > - Please change the subject and update the changelog, > > > "Fixes: c1ae5c75e103" and the whole reasoning is misleading > > > and wrong, IMO. > > > > > > - This patch won't fix all problems because uprobe_perf_filter() > > > filters by mm, not by pid. The changelog/patch assumes that it > > > is a "PID filter", but it is not. > > > > > > See https://lore.kernel.org/linux-trace-kernel/20240825224018.GD3906@xxxxxxxxxx/ > > > If the traced process does clone(CLONE_VM), bpftrace will hit the > > > similar problem, with uprobe or uretprobe. > > > > > > - So I still think that the "right" fix should change the > > > bpf_prog_run_array_uprobe() paths somehow, but I know nothing > > > about bpf. > > > > I agree that this patch does not address the issue correctly. > > The PID filter should be implemented within bpf_prog_run_array_uprobe, > > or alternatively, bpf_prog_run_array_uprobe should be called after > > perf_tp_event_match to reuse the filtering mechanism provided by perf. > > > > Also, uretprobe may need UPROBE_HANDLER_REMOVE, similar to uprobe. > > > > For now, please forget the original patch as we need a new solution ;) > > hi, > any chance we could go with your fix until we find better solution? > > it's simple and it fixes most of the cases for return uprobe pid filter > for events with bpf programs.. I know during the discussion we found > that standard perf record path won't work if there's bpf program > attached on the same event, but I think that likely it needs more > changes and also it's not a common use case > > would you consider sending another version addressing Oleg's points > for changelog above? My pleasure, I'll resend the updated patch in a new thread. Based on previous discussions, `uprobe_perf_filter` acts as a preliminary filter that removes breakpoints when they are no longer needed. More complex filtering mechanisms related to perf are implemented in perf-specific paths.