bianbu-linux-6.6/tools/lib/bpf
Yafang Shao a32ea51a3f libbpf: Fix possible NULL pointer dereference when destroying skeleton
When I checked the code in skeleton header file generated with my own
bpf prog, I found there may be possible NULL pointer dereference when
destroying skeleton. Then I checked the in-tree bpf progs, finding that is
a common issue. Let's take the generated samples/bpf/xdp_redirect_cpu.skel.h
for example. Below is the generated code in
xdp_redirect_cpu__create_skeleton():

	xdp_redirect_cpu__create_skeleton
		struct bpf_object_skeleton *s;
		s = (struct bpf_object_skeleton *)calloc(1, sizeof(*s));
		if (!s)
			goto error;
		...
	error:
		bpf_object__destroy_skeleton(s);
		return  -ENOMEM;

After goto error, the NULL 's' will be deferenced in
bpf_object__destroy_skeleton().

We can simply fix this issue by just adding a NULL check in
bpf_object__destroy_skeleton().

Fixes: d66562fba1 ("libbpf: Add BPF object skeleton support")
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220108134739.32541-1-laoar.shao@gmail.com
2022-01-12 17:01:37 -08:00
..
.gitignore libbpf: Make libbpf_version.h non-auto-generated 2021-09-13 15:36:47 -07:00
bpf.c libbpf: Rename bpf_prog_attach_xattr() to bpf_prog_attach_opts() 2022-01-12 17:01:37 -08:00
bpf.h libbpf: Rename bpf_prog_attach_xattr() to bpf_prog_attach_opts() 2022-01-12 17:01:37 -08:00
bpf_core_read.h libbpf: Fix endianness detection in BPF_CORE_READ_BITFIELD_PROBED() 2021-10-25 20:39:41 -07:00
bpf_endian.h libbpf: Make bpf_endian co-exist with vmlinux.h 2020-07-01 09:06:12 +02:00
bpf_gen_internal.h Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2021-12-10 15:56:13 -08:00
bpf_helpers.h libbpf: Use static const fmt string in __bpf_printk 2021-09-17 14:02:05 -07:00
bpf_prog_linfo.c libbpf: Streamline error reporting for high-level APIs 2021-05-25 17:32:35 -07:00
bpf_tracing.h libbpf: Use 100-character limit to make bpf_tracing.h easier to read 2021-12-28 19:14:45 -08:00
btf.c libbpf: Fix typo in btf__dedup@LIBBPF_0.0.2 definition 2021-12-10 15:35:29 -08:00
btf.h libbpf: Do not use btf_dump__new() macro in C++ mode 2021-12-23 10:23:16 -08:00
btf_dump.c libbpf: Add sane strncpy alternative and use it internally 2021-12-14 15:47:56 +01:00
Build libbpf: Split CO-RE logic into relo_core.c. 2021-07-26 12:29:14 -07:00
gen_loader.c libbpf: Add sane strncpy alternative and use it internally 2021-12-14 15:47:56 +01:00
hashmap.c libbpf: Use IS_ERR_OR_NULL() in hashmap__free() 2022-01-12 17:01:36 -08:00
hashmap.h libbpf, hashmap: Fix undefined behavior in hash_bits 2020-11-02 23:33:51 +01:00
libbpf.c libbpf: Fix possible NULL pointer dereference when destroying skeleton 2022-01-12 17:01:37 -08:00
libbpf.h libbpf 1.0: Deprecate bpf_object__find_map_by_offset() API 2022-01-05 16:11:32 -08:00
libbpf.map libbpf: Rename bpf_prog_attach_xattr() to bpf_prog_attach_opts() 2022-01-12 17:01:37 -08:00
libbpf.pc.template libbpf: Add zlib as a dependency in pkg-config template 2019-12-16 14:55:29 -08:00
libbpf_common.h libbpf: Deprecate bpf_prog_load_xattr() API 2021-12-02 15:23:41 -08:00
libbpf_errno.c libbpf: Streamline error reporting for high-level APIs 2021-05-25 17:32:35 -07:00
libbpf_internal.h libbpf: Improve LINUX_VERSION_CODE detection 2021-12-28 19:20:31 -08:00
libbpf_legacy.h libbpf: Auto-bump RLIMIT_MEMLOCK if kernel needs it for BPF 2021-12-14 22:16:45 +01:00
libbpf_probes.c libbpf: Improve LINUX_VERSION_CODE detection 2021-12-28 19:20:31 -08:00
libbpf_version.h libbpf: Add API to get/set log_level at per-program level 2021-12-02 15:23:40 -08:00
linker.c libbpf: Fix using invalidated memory in bpf_linker 2021-11-26 00:15:03 +01:00
Makefile tools/libbpf: Enable cross-building with clang 2021-12-16 12:15:05 -08:00
netlink.c libbpf: Switch to void * casting in netlink helpers 2021-06-22 17:04:02 +02:00
nlattr.c libbpf: Switch to void * casting in netlink helpers 2021-06-22 17:04:02 +02:00
nlattr.h libbpf: Switch to void * casting in netlink helpers 2021-06-22 17:04:02 +02:00
relo_core.c libbpf: Fix potential uninit memory read 2021-12-14 15:37:58 +01:00
relo_core.h libbpf: Reduce bpf_core_apply_relo_insn() stack usage. 2021-12-03 13:21:59 -08:00
ringbuf.c libbpf: Streamline error reporting for high-level APIs 2021-05-25 17:32:35 -07:00
skel_internal.h bpf, mips: Fix build errors about __NR_bpf undeclared 2021-11-26 22:11:25 +01:00
str_error.c libbpf: Poison kernel-only integer types 2020-01-10 10:38:00 -08:00
str_error.h libbpf: relicense libbpf as LGPL-2.1 OR BSD-2-Clause 2018-10-08 10:09:48 +02:00
strset.c libbpf: Fix memory leak in strset 2021-10-01 22:54:38 +02:00
strset.h libbpf: Extract internal set-of-strings datastructure APIs 2021-03-18 16:14:22 -07:00
xsk.c libbpf: Add sane strncpy alternative and use it internally 2021-12-14 15:47:56 +01:00
xsk.h libbpf: Deprecate AF_XDP support 2021-11-01 18:12:44 -07:00