bpf: Allow return values 0 and 1 for kprobe session
authorJiri Olsa <jolsa@kernel.org>
Fri, 8 Nov 2024 13:45:32 +0000 (14:45 +0100)
committerAndrii Nakryiko <andrii@kernel.org>
Mon, 11 Nov 2024 16:17:57 +0000 (08:17 -0800)
The kprobe session program can return only 0 or 1,
instruct verifier to check for that.

Fixes: 535a3692ba72 ("bpf: Add support for kprobe session attach")
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20241108134544.480660-2-jolsa@kernel.org
kernel/bpf/verifier.c

index 7958d6f..7d8ed37 100644 (file)
@@ -16024,6 +16024,15 @@ static int check_return_code(struct bpf_verifier_env *env, int regno, const char
                        return -ENOTSUPP;
                }
                break;
+       case BPF_PROG_TYPE_KPROBE:
+               switch (env->prog->expected_attach_type) {
+               case BPF_TRACE_KPROBE_SESSION:
+                       range = retval_range(0, 1);
+                       break;
+               default:
+                       return 0;
+               }
+               break;
        case BPF_PROG_TYPE_SK_LOOKUP:
                range = retval_range(SK_DROP, SK_PASS);
                break;