[PATCH bpf-next] libbpf: Ignore the modules that failed to load BTF object

From: Bixuan Cui

Date: Tue Oct 28 2025 - 09:57:53 EST


Register kfunc in self-developed module but run error in other modules:
libbpf: btf: type [164451]: referenced type [164446] is not FUNC_PROTO
libbpf: failed to load module [syscon_reboot_mode]'s BTF object #2: -22

It is usually skipping the error does not affect the search for the next module.

Then ignoring the failed modules, load the bpf process:
libbpf: btf: type [164451]: referenced type [164446] is not FUNC_PROTO
libbpf: failed to load module [syscon_reboot_mode]'s BTF object #3: -22
libbpf: extern (func ksym) 'bpf_kfunc': resolved to bpf_module [164442]
...

Signed-off-by: Bixuan Cui <cuibixuan@xxxxxxxx>
---
tools/lib/bpf/libbpf.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 711173acbcef..0fa0d89da068 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -5702,7 +5702,8 @@ static int load_module_btfs(struct bpf_object *obj)
if (err) {
pr_warn("failed to load module [%s]'s BTF object #%d: %d\n",
name, id, err);
- goto err_out;
+ close(fd);
+ continue;
}

err = libbpf_ensure_mem((void **)&obj->btf_modules, &obj->btf_module_cap,
--
2.39.0