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]>
Acked-by: Leon Hwang <[email protected]>
---
v2:
- add a missing FSESSION in bpf_check_attach_target()
---
 kernel/bpf/verifier.c                               | 10 +++++-----
 tools/testing/selftests/bpf/prog_tests/exceptions.c |  8 ++++----
 tools/testing/selftests/bpf/verifier/sleepable.c    |  2 +-
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 594260c1f382..beb660b4c3ec 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -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);
@@ -25597,7 +25597,7 @@ int bpf_check_attach_target(struct bpf_verifier_log 
*log,
                if (aux->func && aux->func[subprog]->aux->exception_cb) {
                        bpf_log(log,
                                "%s programs cannot attach to exception 
callback\n",
-                               prog_extension ? "Extension" : "FENTRY/FEXIT");
+                               prog_extension ? "Extension" : 
"FENTRY/FEXIT/FSESSION");
                        return -EINVAL;
                }
                conservative = aux->func_info_aux[subprog].unreliable;
@@ -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


Reply via email to