[PATCHv6 bpf-next 03/16] bpf: Allow return values 0 and 1 for kprobe session

Jiri Olsa posted 16 patches 1 month, 2 weeks ago
[PATCHv6 bpf-next 03/16] bpf: Allow return values 0 and 1 for kprobe session
Posted by Jiri Olsa 1 month, 2 weeks ago
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>
---
 kernel/bpf/verifier.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 7d9b38ffd220..787008872a14 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -15910,6 +15910,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;
-- 
2.46.2
Re: [PATCHv6 bpf-next 03/16] bpf: Allow return values 0 and 1 for kprobe session
Posted by Andrii Nakryiko 1 month, 2 weeks ago
On Thu, Oct 10, 2024 at 1:10 PM Jiri Olsa <jolsa@kernel.org> wrote:
>
> 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>
> ---
>  kernel/bpf/verifier.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>

Acked-by: Andrii Nakryiko <andrii@kernel.org>

> diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
> index 7d9b38ffd220..787008872a14 100644
> --- a/kernel/bpf/verifier.c
> +++ b/kernel/bpf/verifier.c
> @@ -15910,6 +15910,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;
> --
> 2.46.2
>