Re: [PATCH bpf-next 1/3] bpf: add missing fsession to the verifier log

From: Menglong Dong

Date: Wed Apr 08 2026 - 06:42:03 EST


On 2026/4/8 17:52 Chengkaitao <pilgrimtao@xxxxxxxxx> write:
> On Wed, Apr 8, 2026 at 11:16 AM Menglong Dong <menglong8.dong@xxxxxxxxx> 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 <dongml2@xxxxxxxxxxxxxxx>
> > ---
> > 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.

Hi, Kaitao. Thanks for the reviewing.

Right, the comments for fsession are not updated, as I'm not sure if
it worth it. There are around a dozen of comments that we
need to update.

Thanks!
Menglong Dong

>
> Reviewed-by: Kaitao Cheng <chengkaitao@xxxxxxxxxx>
>
> > @@ -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
>