Re: [PATCH bpf-next 2/2] bpf: treewide: Annotate BPF kfuncs in BTF
From: Jiri Olsa <hidden>
Date: 2024-01-04 11:41:56
Also in:
bpf, cgroups, linux-input, linux-kselftest, lkml, netdev, netfilter-devel
On Wed, Jan 03, 2024 at 04:31:56PM -0700, Daniel Xu wrote: SNIP
quoted hunk ↗ jump to hunk
diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h index 88f914579fa1..771e29762a2d 100644 --- a/include/linux/btf_ids.h +++ b/include/linux/btf_ids.h@@ -8,6 +8,9 @@ struct btf_id_set { u32 ids[]; }; +/* This flag implies BTF_SET8 holds kfunc(s) */ +#define BTF_SET8_KFUNC (1 << 0) + struct btf_id_set8 { u32 cnt; u32 flags;diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 51e8b4bee0c8..b8ba00a4179f 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c@@ -7769,6 +7769,9 @@ static int __register_btf_kfunc_id_set(enum btf_kfunc_hook hook, struct btf *btf; int ret, i; + /* All kfuncs need to be tagged as such in BTF */ + WARN_ON(!(kset->set->flags & BTF_SET8_KFUNC));
__register_btf_kfunc_id_set gets called also from the 'hooks' path:
bpf_mptcp_kfunc_init
register_btf_fmodret_id_set
__register_btf_kfunc_id_set
so it will hit the warn.. it should be probably in the register_btf_kfunc_id_set ?
also given that we can have modules calling register_btf_kfunc_id_set,
should we just return error instead of the warn?
SNIP
quoted hunk ↗ jump to hunk
diff --git a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c b/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c index 91907b321f91..32972334cd50 100644 --- a/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c +++ b/tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c@@ -341,7 +341,7 @@ static struct bin_attribute bin_attr_bpf_testmod_file __ro_after_init = { .write = bpf_testmod_test_write, }; -BTF_SET8_START(bpf_testmod_common_kfunc_ids) +BTF_SET8_START(bpf_testmod_common_kfunc_ids, BTF_SET8_KFUNC) BTF_ID_FLAGS(func, bpf_iter_testmod_seq_new, KF_ITER_NEW) BTF_ID_FLAGS(func, bpf_iter_testmod_seq_next, KF_ITER_NEXT | KF_RET_NULL) BTF_ID_FLAGS(func, bpf_iter_testmod_seq_destroy, KF_ITER_DESTROY)
we need to change also bpf_testmod_check_kfunc_ids set jirka
-- 2.42.1