Re: [PATCH v4 0/9] bpf: fprobe: rethook: Use ftrace_regs instead of pt_regs

From: Florent Revest
Date: Fri Aug 25 2023 - 12:12:47 EST


On Wed, Aug 23, 2023 at 5:15 PM Masami Hiramatsu (Google)
<mhiramat@xxxxxxxxxx> wrote:
>
> Hi,
>
> Here is the 4th version of the series to use ftrace_regs instead of pt_regs
> in fprobe.
> The previous version is here;
>
> https://lore.kernel.org/all/169181859570.505132.10136520092011157898.stgit@devnote2/
>
> This version fixes the issues pointed in the previous series; fix document
> description, keep CONFIG_FPROBE dependency for multi-kprobe, add
> static_assert check for ftrace_regs size, reorder the ftrace_partial_regs()
> patch for perf fprobe event support, introduce per-cpu pt_regs stack for
> perf fprobe event and add Florent's Ack (Thanks!). Also this adds a new
> documentation patch to clarify that the $argN and $retval is best effort.
>
> - Document fix for the current fprobe callback prototype
> - Simply replace pt_regs in fprobe_entry_handler with ftrace_regs.
> - Expose ftrace_regs even if CONFIG_FUNCTION_TRACER=n.
> - Introduce ftrace_partial_regs(). (This changes ARM64 which needs a custom
> implementation)
> - Replace pt_regs in rethook and fprobe_exit_handler with ftrace_regs. This
> introduce a new HAVE_PT_REGS_TO_FTRACE_REGS_CAST which means ftrace_regs is
> just a wrapper of pt_regs (except for arm64, other architectures do this)
> - Update fprobe-events to use ftrace_regs natively.
> - Update bpf multi-kprobe handler use ftrace_partial_regs().
> - Update document for new fprobe callbacks.
> - Add notes for the $argN and $retval.
>
> This series can be applied against the probes/core branch on linux-trace tree.
>
> This series can also be found below branch.
>
> https://git.kernel.org/pub/scm/linux/kernel/git/mhiramat/linux.git/log/?h=topic/fprobe-ftrace-regs
>
> Thank you,

FWIW, I verified that I could implement BPF multi_kprobe on arm64 on
top of this series so the BPF multi_kprobe usecase is tested but I
haven't tested the "trace_fprobe" or perf use cases.