Thread (6 messages) 6 messages, 2 authors, 2024-01-06

Re: [PATCH bpf-next v2 3/3] bpf: treewide: Annotate BPF kfuncs in BTF

From: Daniel Xu <hidden>
Date: 2024-01-05 16:55:55
Also in: bpf, cgroups, linux-kselftest, linux-trace-kernel, lkml, netdev, netfilter-devel

On Fri, Jan 05, 2024 at 04:11:33PM +0100, Jiri Olsa wrote:
On Thu, Jan 04, 2024 at 07:45:49PM -0700, Daniel Xu wrote:

SNIP
quoted
diff --git a/fs/verity/measure.c b/fs/verity/measure.c
index bf7a5f4cccaf..3969d54158d1 100644
--- a/fs/verity/measure.c
+++ b/fs/verity/measure.c
@@ -159,9 +159,9 @@ __bpf_kfunc int bpf_get_fsverity_digest(struct file *file, struct bpf_dynptr_ker
 
 __bpf_kfunc_end_defs();
 
-BTF_SET8_START(fsverity_set_ids)
+BTF_KFUNCS_START(fsverity_set_ids)
 BTF_ID_FLAGS(func, bpf_get_fsverity_digest, KF_TRUSTED_ARGS)
-BTF_SET8_END(fsverity_set_ids)
+BTF_KFUNCS_END(fsverity_set_ids)
 
 static int bpf_get_fsverity_digest_filter(const struct bpf_prog *prog, u32 kfunc_id)
 {
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index 51e8b4bee0c8..8cc718f37a9d 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -7802,6 +7802,10 @@ int register_btf_kfunc_id_set(enum bpf_prog_type prog_type,
 {
 	enum btf_kfunc_hook hook;
 
+	/* All kfuncs need to be tagged as such in BTF */
+	if (WARN_ON(!(kset->set->flags & BTF_SET8_KFUNCS)))
+		return -EINVAL;
having the warning for module with wrong set8 flags seems wrong to me,
I think we should trigger the warn only for kernel calls.. by adding
kset->owner check in the condition above
Just checking:

The reasoning is that =m and out-of-tree modules can and should check
return code, right?

And =y modules or vmlinux-based registrations do not check return code,
so WARN() is necessary?

If so, I'd agree.

[..]

Thanks,
Daniel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help