On Mon, May 12, 2025 at 2:02 PM Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > Instead of hardcoding the list of kfuncs that need prog->aux passed to > them with a combination of fixup_kfunc_call adjustment + __ign suffix, > combine both in __aux suffix, which ignores the argument passed in, and > fixes it up to the prog->aux. This allows kfuncs to have the prog->aux > passed into them without having to touch the verifier. > > Cc: Tejun Heo <tj@xxxxxxxxxx> > Signed-off-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> > --- > include/linux/bpf_verifier.h | 1 + > kernel/bpf/helpers.c | 4 ++-- > kernel/bpf/verifier.c | 33 +++++++++++++++++++++++++++------ > 3 files changed, 30 insertions(+), 8 deletions(-) > > diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h > index 9734544b6957..1d90e44a1d04 100644 > --- a/include/linux/bpf_verifier.h > +++ b/include/linux/bpf_verifier.h > @@ -606,6 +606,7 @@ struct bpf_insn_aux_data { > bool calls_callback; > /* registers alive before this instruction. */ > u16 live_regs_before; > + u16 arg_prog_aux; > }; > > #define MAX_USED_MAPS 64 /* max number of maps accessed by one eBPF program */ > diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c > index fed53da75025..2b6bac4bf6e3 100644 > --- a/kernel/bpf/helpers.c > +++ b/kernel/bpf/helpers.c > @@ -3012,9 +3012,9 @@ __bpf_kfunc int bpf_wq_start(struct bpf_wq *wq, unsigned int flags) > __bpf_kfunc int bpf_wq_set_callback_impl(struct bpf_wq *wq, > int (callback_fn)(void *map, int *key, void *value), > unsigned int flags, > - void *aux__ign) > + void *aux__aux) aux__aux is an odd name. "__aux" as a suffix also looks strange. How about "__prog" suffix ? It will be similar to the existing "__map" suffix. We can also standardize the argument name as __bpf_kfunc int bpf_wq_set_callback_impl(.. , void *aux__prog) then the name is more or less explanatory. > { > - struct bpf_prog_aux *aux = (struct bpf_prog_aux *)aux__ign; > + struct bpf_prog_aux *aux = (struct bpf_prog_aux *)aux__aux; and here it will be: + struct bpf_prog_aux *aux = (struct bpf_prog_aux *)aux__prog; which looks ok to me. pw-bot: cr