aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/bpf/btf_dump.c
diff options
context:
space:
mode:
authorAndrii Nakryiko <andriin@fb.com>2020-07-29 16:21:48 -0700
committerDaniel Borkmann <daniel@iogearbox.net>2020-07-31 00:53:07 +0200
commit50450fc716c1a570ee8d8bfe198ef5d3cfca36e4 (patch)
tree081623f21697f9919d3120b820ddea93f776ceab /tools/lib/bpf/btf_dump.c
parentselftests/bpf: Omit nodad flag when adding addresses to loopback (diff)
downloadlinux-dev-50450fc716c1a570ee8d8bfe198ef5d3cfca36e4.tar.xz
linux-dev-50450fc716c1a570ee8d8bfe198ef5d3cfca36e4.zip
libbpf: Make destructors more robust by handling ERR_PTR(err) cases
Most of libbpf "constructors" on failure return ERR_PTR(err) result encoded as a pointer. It's a common mistake to eventually pass such malformed pointers into xxx__destroy()/xxx__free() "destructors". So instead of fixing up clean up code in selftests and user programs, handle such error pointers in destructors themselves. This works beautifully for NULL pointers passed to destructors, so might as well just work for error pointers. Suggested-by: Song Liu <songliubraving@fb.com> Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Song Liu <songliubraving@fb.com> Link: https://lore.kernel.org/bpf/20200729232148.896125-1-andriin@fb.com
Diffstat (limited to 'tools/lib/bpf/btf_dump.c')
-rw-r--r--tools/lib/bpf/btf_dump.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c
index e1c344504cae..cf711168d34a 100644
--- a/tools/lib/bpf/btf_dump.c
+++ b/tools/lib/bpf/btf_dump.c
@@ -183,7 +183,7 @@ void btf_dump__free(struct btf_dump *d)
{
int i, cnt;
- if (!d)
+ if (IS_ERR_OR_NULL(d))
return;
free(d->type_states);