Commit d1313e01 authored by Sahid Orentino Ferdjaoui's avatar Sahid Orentino Ferdjaoui Committed by Alexei Starovoitov
Browse files

bpftool: clean-up usage of libbpf_get_error()



bpftool is now totally compliant with libbpf 1.0 mode and is not
expected to be compiled with pre-1.0, let's clean-up the usage of
libbpf_get_error().

The changes stay aligned with returned errors always negative.

- In tools/bpf/bpftool/btf.c This fixes an uninitialized local
variable `err` in function do_dump() because it may now be returned
without having been set.
- This also removes the checks on NULL pointers before calling
btf__free() because that function already does the check.

Signed-off-by: default avatarSahid Orentino Ferdjaoui <sahid.ferdjaoui@industrialdiscipline.com>
Link: https://lore.kernel.org/r/20221120112515.38165-5-sahid.ferdjaoui@industrialdiscipline.com


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent d2973ffd
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -467,9 +467,8 @@ static int dump_btf_c(const struct btf *btf,
	int err = 0, i;

	d = btf_dump__new(btf, btf_dump_printf, NULL, NULL);
	err = libbpf_get_error(d);
	if (err)
		return err;
	if (!d)
		return -errno;

	printf("#ifndef __VMLINUX_H__\n");
	printf("#define __VMLINUX_H__\n");
@@ -512,11 +511,9 @@ static struct btf *get_vmlinux_btf_from_sysfs(void)
	struct btf *base;

	base = btf__parse(sysfs_vmlinux, NULL);
	if (libbpf_get_error(base)) {
		p_err("failed to parse vmlinux BTF at '%s': %ld\n",
		      sysfs_vmlinux, libbpf_get_error(base));
		base = NULL;
	}
	if (!base)
		p_err("failed to parse vmlinux BTF at '%s': %d\n",
		      sysfs_vmlinux, -errno);

	return base;
}
@@ -559,7 +556,7 @@ static int do_dump(int argc, char **argv)
	__u32 btf_id = -1;
	const char *src;
	int fd = -1;
	int err;
	int err = 0;

	if (!REQ_ARGS(2)) {
		usage();
@@ -634,8 +631,8 @@ static int do_dump(int argc, char **argv)
			base = get_vmlinux_btf_from_sysfs();

		btf = btf__parse_split(*argv, base ?: base_btf);
		err = libbpf_get_error(btf);
		if (!btf) {
			err = -errno;
			p_err("failed to load BTF from %s: %s",
			      *argv, strerror(errno));
			goto done;
@@ -681,8 +678,8 @@ static int do_dump(int argc, char **argv)
		}

		btf = btf__load_from_kernel_by_id_split(btf_id, base_btf);
		err = libbpf_get_error(btf);
		if (!btf) {
			err = -errno;
			p_err("get btf by id (%u): %s", btf_id, strerror(errno));
			goto done;
		}
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ static int dump_prog_id_as_func_ptr(const struct btf_dumper *d,
		goto print;

	prog_btf = btf__load_from_kernel_by_id(info.btf_id);
	if (libbpf_get_error(prog_btf))
	if (!prog_btf)
		goto print;
	func_type = btf__type_by_id(prog_btf, finfo.type_id);
	if (!func_type || !btf_is_func(func_type))
+4 −6
Original line number Diff line number Diff line
@@ -252,9 +252,8 @@ static int codegen_datasecs(struct bpf_object *obj, const char *obj_name)
	int err = 0;

	d = btf_dump__new(btf, codegen_btf_dump_printf, NULL, NULL);
	err = libbpf_get_error(d);
	if (err)
		return err;
	if (!d)
		return -errno;

	bpf_object__for_each_map(map, obj) {
		/* only generate definitions for memory-mapped internal maps */
@@ -976,13 +975,12 @@ static int do_skeleton(int argc, char **argv)
		/* log_level1 + log_level2 + stats, but not stable UAPI */
		opts.kernel_log_level = 1 + 2 + 4;
	obj = bpf_object__open_mem(obj_data, file_sz, &opts);
	err = libbpf_get_error(obj);
	if (err) {
	if (!obj) {
		char err_buf[256];

		err = -errno;
		libbpf_strerror(err, err_buf, sizeof(err_buf));
		p_err("failed to open BPF object file: %s", err_buf);
		obj = NULL;
		goto out;
	}

+6 −4
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <errno.h>
#include <unistd.h>
#include <linux/err.h>
#include <bpf/libbpf.h>
@@ -48,8 +49,8 @@ static int do_pin(int argc, char **argv)
	}

	obj = bpf_object__open(objfile);
	err = libbpf_get_error(obj);
	if (err) {
	if (!obj) {
		err = -errno;
		p_err("can't open objfile %s", objfile);
		goto close_map_fd;
	}
@@ -62,13 +63,14 @@ static int do_pin(int argc, char **argv)

	prog = bpf_object__next_program(obj, NULL);
	if (!prog) {
		err = -errno;
		p_err("can't find bpf program in objfile %s", objfile);
		goto close_obj;
	}

	link = bpf_program__attach_iter(prog, &iter_opts);
	err = libbpf_get_error(link);
	if (err) {
	if (!link) {
		err = -errno;
		p_err("attach_iter failed for program %s",
		      bpf_program__name(prog));
		goto close_obj;
+3 −4
Original line number Diff line number Diff line
@@ -510,10 +510,9 @@ int main(int argc, char **argv)
			break;
		case 'B':
			base_btf = btf__parse(optarg, NULL);
			if (libbpf_get_error(base_btf)) {
				p_err("failed to parse base BTF at '%s': %ld\n",
				      optarg, libbpf_get_error(base_btf));
				base_btf = NULL;
			if (!base_btf) {
				p_err("failed to parse base BTF at '%s': %d\n",
				      optarg, -errno);
				return -1;
			}
			break;
Loading