On Tue, Jul 22, 2025 at 11:35 PM KaFai Wan <kafai....@linux.dev> wrote: > > With this change, we know the precise rejected function name when > attaching fexit/fmod_ret to __noreturn functions from log. > > $ ./fexit > libbpf: prog 'fexit': BPF program load failed: -EINVAL > libbpf: prog 'fexit': -- BEGIN PROG LOAD LOG -- > Attaching fexit/fmod_ret to __noreturn function 'do_exit' is rejected. > > Suggested-by: Leon Hwang <leon.hw...@linux.dev> > Signed-off-by: KaFai Wan <kafai....@linux.dev>
Acked-by: Yafang Shao <laoar.s...@gmail.com> > --- > kernel/bpf/verifier.c | 3 ++- > tools/testing/selftests/bpf/progs/fexit_noreturns.c | 2 +- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c > index e2fcea860755..00d287814f12 100644 > --- a/kernel/bpf/verifier.c > +++ b/kernel/bpf/verifier.c > @@ -23946,7 +23946,8 @@ static int check_attach_btf_id(struct > bpf_verifier_env *env) > } else if ((prog->expected_attach_type == BPF_TRACE_FEXIT || > prog->expected_attach_type == BPF_MODIFY_RETURN) && > btf_id_set_contains(&noreturn_deny, btf_id)) { > - verbose(env, "Attaching fexit/fmod_ret to __noreturn > functions is rejected.\n"); > + verbose(env, "Attaching fexit/fmod_ret to __noreturn function > '%s' is rejected.\n", > + tgt_info.tgt_name); > return -EINVAL; > } > > diff --git a/tools/testing/selftests/bpf/progs/fexit_noreturns.c > b/tools/testing/selftests/bpf/progs/fexit_noreturns.c > index 54654539f550..b1c33d958ae2 100644 > --- a/tools/testing/selftests/bpf/progs/fexit_noreturns.c > +++ b/tools/testing/selftests/bpf/progs/fexit_noreturns.c > @@ -8,7 +8,7 @@ > char _license[] SEC("license") = "GPL"; > > SEC("fexit/do_exit") > -__failure __msg("Attaching fexit/fmod_ret to __noreturn functions is > rejected.") > +__failure __msg("Attaching fexit/fmod_ret to __noreturn function 'do_exit' > is rejected.") > int BPF_PROG(noreturns) > { > return 0; > -- > 2.43.0 > -- Regards Yafang