On Sat, Nov 15, 2025 at 2:42 AM Alexei Starovoitov <[email protected]> wrote: > > On Fri, Nov 14, 2025 at 1:25 AM Menglong Dong <[email protected]> > wrote: > > > > Introduce the function bpf_arch_text_poke_type(), which is able to specify > > both the current and new opcode. If it is not implemented by the arch, > > bpf_arch_text_poke() will be called directly if the current opcode is the > > same as the new one. Otherwise, -EOPNOTSUPP will be returned. > > > > Signed-off-by: Menglong Dong <[email protected]> > > --- > > include/linux/bpf.h | 4 ++++ > > kernel/bpf/core.c | 10 ++++++++++ > > 2 files changed, 14 insertions(+) > > > > diff --git a/include/linux/bpf.h b/include/linux/bpf.h > > index d65a71042aa3..aec7c65539f5 100644 > > --- a/include/linux/bpf.h > > +++ b/include/linux/bpf.h > > @@ -3711,6 +3711,10 @@ enum bpf_text_poke_type { > > BPF_MOD_JUMP, > > }; > > > > +int bpf_arch_text_poke_type(void *ip, enum bpf_text_poke_type old_t, > > + enum bpf_text_poke_type new_t, void *addr1, > > + void *addr2); > > + > > Instead of adding a new helper, I think, it's cleaner to change > the existing bpf_arch_text_poke() across all archs in one patch, > and also do: > > enum bpf_text_poke_type { > + BPF_MOD_NOP, > BPF_MOD_CALL, > BPF_MOD_JUMP, > }; > > and use that instead of addr[12] = !NULL to indicate > the transition. > > The callsites will be easier to read when they will look like: > bpf_arch_text_poke(ip, BPF_MOD_CALL, BPF_MOD_CALL, old_addr, new_addr); > > bpf_arch_text_poke(ip, BPF_MOD_NOP, BPF_MOD_CALL, NULL, new_addr); > > bpf_arch_text_poke(ip, BPF_MOD_JMP, BPF_MOD_CALL, old_addr, new_addr);
Yeah, much clearer. The new helper also makes me feel a bit dizzy. Thanks! Menglong Dong
