]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 12:53:24 +0000 (13:53 +0100)
[ Upstream commit 17c4b65a24938c6dd79496cce5df15f70d9c253c ]

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
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/bpf/verifier.c

index b34a358c75e0fbf18d95cfc277d43f641ef805c8..61c3896087b2c88bcfe3de700ee05f7434bdddb8 100644 (file)
@@ -15798,6 +15798,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;