On Wed, Apr 8, 2026 at 11:16 AM Menglong Dong <[email protected]> wrote: > > The fsession attach type is missed in the verifier log in > check_get_func_ip(), bpf_check_attach_target() and check_attach_btf_id(). > Update them to make the verifier log proper. Meanwhile, update the > corresponding selftests. > > Signed-off-by: Menglong Dong <[email protected]> > --- > kernel/bpf/verifier.c | 8 ++++---- > tools/testing/selftests/bpf/prog_tests/exceptions.c | 8 ++++---- > tools/testing/selftests/bpf/verifier/sleepable.c | 2 +- > 3 files changed, 9 insertions(+), 9 deletions(-) > > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c > index 594260c1f382..707eaf262307 100644 > --- a/kernel/bpf/verifier.c > +++ b/kernel/bpf/verifier.c
Some comments in bpf_check_attach_target still need to be added or updated. Reviewed-by: Kaitao Cheng <[email protected]> > @@ -11757,7 +11757,7 @@ static int check_get_func_ip(struct bpf_verifier_env > *env) > > if (type == BPF_PROG_TYPE_TRACING) { > if (!bpf_prog_has_trampoline(env->prog)) { > - verbose(env, "func %s#%d supported only for > fentry/fexit/fmod_ret programs\n", > + verbose(env, "func %s#%d supported only for > fentry/fexit/fsession/fmod_ret programs\n", > func_id_name(func_id), func_id); > return -ENOTSUPP; > } > @@ -25561,7 +25561,7 @@ int bpf_check_attach_target(struct bpf_verifier_log > *log, > btf = tgt_prog ? tgt_prog->aux->btf : prog->aux->attach_btf; > if (!btf) { > bpf_log(log, > - "FENTRY/FEXIT program can only be attached to another > program annotated with BTF\n"); > + "FENTRY/FEXIT/FSESSION program can only be attached > to another program annotated with BTF\n"); > return -EINVAL; > } > t = btf_type_by_id(btf, btf_id); > @@ -25686,7 +25686,7 @@ int bpf_check_attach_target(struct bpf_verifier_log > *log, > case BPF_TRACE_RAW_TP: > if (tgt_prog) { > bpf_log(log, > - "Only FENTRY/FEXIT progs are attachable to > another BPF prog\n"); > + "Only FENTRY/FEXIT/FSESSION progs are > attachable to another BPF prog\n"); > return -EINVAL; > } > if (!btf_type_is_typedef(t)) { > @@ -25952,7 +25952,7 @@ static int check_attach_btf_id(struct > bpf_verifier_env *env) > } > > if (prog->sleepable && !can_be_sleepable(prog)) { > - verbose(env, "Only fentry/fexit/fmod_ret, lsm, iter, uprobe, > and struct_ops programs can be sleepable\n"); > + verbose(env, "Only fentry/fexit/fsession/fmod_ret, lsm, iter, > uprobe, and struct_ops programs can be sleepable\n"); > return -EINVAL; > } > > diff --git a/tools/testing/selftests/bpf/prog_tests/exceptions.c > b/tools/testing/selftests/bpf/prog_tests/exceptions.c > index 84ab73e08b0e..94a62fcd4543 100644 > --- a/tools/testing/selftests/bpf/prog_tests/exceptions.c > +++ b/tools/testing/selftests/bpf/prog_tests/exceptions.c > @@ -128,7 +128,7 @@ static void test_exceptions_success(void) > > bpf_program__fd(skel->progs.exception_ext_mod_cb_runtime), > "exception_cb_mod"), > "set_attach_target")) > goto done; > - }), "FENTRY/FEXIT programs cannot attach to exception > callback", 0); > + }), "FENTRY/FEXIT/FSESSION programs cannot attach to > exception callback", 0); > > if (test__start_subtest("throwing fentry -> exception_cb")) > RUN_EXT(-EINVAL, true, ({ > @@ -138,7 +138,7 @@ static void test_exceptions_success(void) > > bpf_program__fd(skel->progs.exception_ext_mod_cb_runtime), > "exception_cb_mod"), > "set_attach_target")) > goto done; > - }), "FENTRY/FEXIT programs cannot attach to exception > callback", 0); > + }), "FENTRY/FEXIT/FSESSION programs cannot attach to > exception callback", 0); > > if (test__start_subtest("non-throwing fexit -> exception_cb")) > RUN_EXT(-EINVAL, true, ({ > @@ -148,7 +148,7 @@ static void test_exceptions_success(void) > > bpf_program__fd(skel->progs.exception_ext_mod_cb_runtime), > "exception_cb_mod"), > "set_attach_target")) > goto done; > - }), "FENTRY/FEXIT programs cannot attach to exception > callback", 0); > + }), "FENTRY/FEXIT/FSESSION programs cannot attach to > exception callback", 0); > > if (test__start_subtest("throwing fexit -> exception_cb")) > RUN_EXT(-EINVAL, true, ({ > @@ -158,7 +158,7 @@ static void test_exceptions_success(void) > > bpf_program__fd(skel->progs.exception_ext_mod_cb_runtime), > "exception_cb_mod"), > "set_attach_target")) > goto done; > - }), "FENTRY/FEXIT programs cannot attach to exception > callback", 0); > + }), "FENTRY/FEXIT/FSESSION programs cannot attach to > exception callback", 0); > > if (test__start_subtest("throwing extension (with custom cb) -> > exception_cb")) > RUN_EXT(-EINVAL, true, ({ > diff --git a/tools/testing/selftests/bpf/verifier/sleepable.c > b/tools/testing/selftests/bpf/verifier/sleepable.c > index 1f0d2bdc673f..c2b7f5ebf168 100644 > --- a/tools/testing/selftests/bpf/verifier/sleepable.c > +++ b/tools/testing/selftests/bpf/verifier/sleepable.c > @@ -85,7 +85,7 @@ > .expected_attach_type = BPF_TRACE_RAW_TP, > .kfunc = "sched_switch", > .result = REJECT, > - .errstr = "Only fentry/fexit/fmod_ret, lsm, iter, uprobe, and > struct_ops programs can be sleepable", > + .errstr = "Only fentry/fexit/fsession/fmod_ret, lsm, iter, uprobe, > and struct_ops programs can be sleepable", > .flags = BPF_F_SLEEPABLE, > .runs = -1, > }, > -- > 2.53.0 > > -- Yours, Chengkaitao

