Skip to content

Commit

Permalink
libbpf: Make BTF finalization strict
Browse files Browse the repository at this point in the history
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: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20200708015318.3827358-2-andriin@fb.com
  • Loading branch information
Andrii Nakryiko authored and Daniel Borkmann committed Jul 8, 2020
1 parent b8c50df commit bfc9665
Showing 1 changed file with 4 additions and 12 deletions.
16 changes: 4 additions & 12 deletions tools/lib/bpf/libbpf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

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;
if (err) {
pr_warn("Error finalizing %s: %d.\n", BTF_ELF_SEC, err);
return err;
}

return 0;
}

Expand Down

0 comments on commit bfc9665

Please sign in to comment.