projects
/
linux-block.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
e63985e
)
bpf: Allow kfuncs return 'void *'
author
Alexei Starovoitov
<ast@kernel.org>
Thu, 7 Mar 2024 03:12:23 +0000
(19:12 -0800)
committer
Martin KaFai Lau
<martin.lau@kernel.org>
Thu, 7 Mar 2024 22:58:48 +0000
(14:58 -0800)
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>
Link:
https://lore.kernel.org/r/20240307031228.42896-2-alexei.starovoitov@gmail.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
kernel/bpf/verifier.c
patch
|
blob
|
blame
|
history
diff --git
a/kernel/bpf/verifier.c
b/kernel/bpf/verifier.c
index ee86e4d7d5fcc6462eb27e5c3d2d84388b18e382..9c2a36b1373b9b83934fbd0b8e8937f67a7d0abb 100644
(file)
--- 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;