All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexei Starovoitov <alexei.starovoitov@gmail.com>
To: bpf@vger.kernel.org
Cc: daniel@iogearbox.net, andrii@kernel.org, martin.lau@kernel.org,
	memxor@gmail.com, eddyz87@gmail.com, kernel-team@fb.com
Subject: [PATCH v4 bpf-next 1/6] bpf: Allow kfuncs return 'void *'
Date: Wed,  6 Mar 2024 19:12:23 -0800	[thread overview]
Message-ID: <20240307031228.42896-2-alexei.starovoitov@gmail.com> (raw)
In-Reply-To: <20240307031228.42896-1-alexei.starovoitov@gmail.com>

From: Alexei Starovoitov <ast@kernel.org>

Recognize return of 'void *' from kfunc as returning unknown scalar.

Acked-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
---
 kernel/bpf/verifier.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index ee86e4d7d5fc..9c2a36b1373b 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -12364,6 +12364,9 @@ static int check_kfunc_call(struct bpf_verifier_env *env, struct bpf_insn *insn,
 					meta.func_name);
 				return -EFAULT;
 			}
+		} else if (btf_type_is_void(ptr_type)) {
+			/* kfunc returning 'void *' is equivalent to returning scalar */
+			mark_reg_unknown(env, regs, BPF_REG_0);
 		} else if (!__btf_type_is_struct(ptr_type)) {
 			if (!meta.r0_size) {
 				__u32 sz;
-- 
2.43.0


  reply	other threads:[~2024-03-07  3:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-07  3:12 [PATCH v4 bpf-next 0/6] bpf: arena prerequisites Alexei Starovoitov
2024-03-07  3:12 ` Alexei Starovoitov [this message]
2024-03-07  3:12 ` [PATCH v4 bpf-next 2/6] bpf: Recognize '__map' suffix in kfunc arguments Alexei Starovoitov
2024-03-07  3:12 ` [PATCH v4 bpf-next 3/6] bpf: Plumb get_unmapped_area() callback into bpf_map_ops Alexei Starovoitov
2024-03-07  3:12 ` [PATCH v4 bpf-next 4/6] libbpf: Allow specifying 64-bit integers in map BTF Alexei Starovoitov
2024-03-07  3:12 ` [PATCH v4 bpf-next 5/6] bpftool: rename is_internal_mmapable_map into is_mmapable_map Alexei Starovoitov
2024-03-07  9:55   ` Quentin Monnet
2024-03-07  3:12 ` [PATCH v4 bpf-next 6/6] bpf: Tell bpf programs kernel's PAGE_SIZE Alexei Starovoitov
2024-03-07 23:10 ` [PATCH v4 bpf-next 0/6] bpf: arena prerequisites patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240307031228.42896-2-alexei.starovoitov@gmail.com \
    --to=alexei.starovoitov@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=kernel-team@fb.com \
    --cc=martin.lau@kernel.org \
    --cc=memxor@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.