Commit bfc96656 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Daniel Borkmann
Browse files

libbpf: Make BTF finalization strict



With valid ELF and valid BTF, there is no reason (apart from bugs) why BTF
finalization should fail. So make it strict and return error if it fails. This
makes CO-RE relocation more reliable, as they are not going to be just
silently skipped, if BTF finalization failed.

Signed-off-by: default avatarAndrii Nakryiko <andriin@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200708015318.3827358-2-andriin@fb.com
parent b8c50df0
Loading
Loading
Loading
Loading
+4 −12
Original line number Diff line number Diff line
@@ -2473,19 +2473,11 @@ static int bpf_object__finalize_btf(struct bpf_object *obj)
		return 0;

	err = btf__finalize_data(obj, obj->btf);
	if (!err)
		return 0;

	if (err) {
		pr_warn("Error finalizing %s: %d.\n", BTF_ELF_SEC, err);
	btf__free(obj->btf);
	obj->btf = NULL;
	btf_ext__free(obj->btf_ext);
	obj->btf_ext = NULL;

	if (libbpf_needs_btf(obj)) {
		pr_warn("BTF is required, but is missing or corrupted.\n");
		return -ENOENT;
		return err;
	}

	return 0;
}