bpftool: Fix error check when calling hashmap__new()
hashmap__new() encodes errors with ERR_PTR(), hence it's not valid to check the returned pointer against NULL and IS_ERR() has to be used instead. libbpf_get_error() can't be used in this case as hashmap__new() is not part of the public libbpf API and it'll continue using ERR_PTR() after libbpf 1.0. Fixes:8f184732b6
("bpftool: Switch to libbpf's hashmap for pinned paths of BPF objects") Fixes:2828d0d75b
("bpftool: Switch to libbpf's hashmap for programs/maps in BTF listing") Fixes:d6699f8e0f
("bpftool: Switch to libbpf's hashmap for PIDs/names references") Signed-off-by: Mauricio Vásquez <mauricio@kinvolk.io> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Reviewed-by: Quentin Monnet <quentin@isovalent.com> Acked-by: Song Liu <songliubraving@fb.com> Link: https://lore.kernel.org/bpf/20220107152620.192327-2-mauricio@kinvolk.io
This commit is contained in:
parent
fba60b171a
commit
622a5b582c
|
@ -902,7 +902,7 @@ static int do_show(int argc, char **argv)
|
||||||
equal_fn_for_key_as_id, NULL);
|
equal_fn_for_key_as_id, NULL);
|
||||||
btf_map_table = hashmap__new(hash_fn_for_key_as_id,
|
btf_map_table = hashmap__new(hash_fn_for_key_as_id,
|
||||||
equal_fn_for_key_as_id, NULL);
|
equal_fn_for_key_as_id, NULL);
|
||||||
if (!btf_prog_table || !btf_map_table) {
|
if (IS_ERR(btf_prog_table) || IS_ERR(btf_map_table)) {
|
||||||
hashmap__free(btf_prog_table);
|
hashmap__free(btf_prog_table);
|
||||||
hashmap__free(btf_map_table);
|
hashmap__free(btf_map_table);
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
/* Copyright (C) 2020 Facebook */
|
/* Copyright (C) 2020 Facebook */
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <linux/err.h>
|
||||||
#include <net/if.h>
|
#include <net/if.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -306,7 +307,7 @@ static int do_show(int argc, char **argv)
|
||||||
if (show_pinned) {
|
if (show_pinned) {
|
||||||
link_table = hashmap__new(hash_fn_for_key_as_id,
|
link_table = hashmap__new(hash_fn_for_key_as_id,
|
||||||
equal_fn_for_key_as_id, NULL);
|
equal_fn_for_key_as_id, NULL);
|
||||||
if (!link_table) {
|
if (IS_ERR(link_table)) {
|
||||||
p_err("failed to create hashmap for pinned paths");
|
p_err("failed to create hashmap for pinned paths");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -699,7 +699,7 @@ static int do_show(int argc, char **argv)
|
||||||
if (show_pinned) {
|
if (show_pinned) {
|
||||||
map_table = hashmap__new(hash_fn_for_key_as_id,
|
map_table = hashmap__new(hash_fn_for_key_as_id,
|
||||||
equal_fn_for_key_as_id, NULL);
|
equal_fn_for_key_as_id, NULL);
|
||||||
if (!map_table) {
|
if (IS_ERR(map_table)) {
|
||||||
p_err("failed to create hashmap for pinned paths");
|
p_err("failed to create hashmap for pinned paths");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
/* Copyright (C) 2020 Facebook */
|
/* Copyright (C) 2020 Facebook */
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <linux/err.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -101,7 +102,7 @@ int build_obj_refs_table(struct hashmap **map, enum bpf_obj_type type)
|
||||||
libbpf_print_fn_t default_print;
|
libbpf_print_fn_t default_print;
|
||||||
|
|
||||||
*map = hashmap__new(hash_fn_for_key_as_id, equal_fn_for_key_as_id, NULL);
|
*map = hashmap__new(hash_fn_for_key_as_id, equal_fn_for_key_as_id, NULL);
|
||||||
if (!*map) {
|
if (IS_ERR(*map)) {
|
||||||
p_err("failed to create hashmap for PID references");
|
p_err("failed to create hashmap for PID references");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -641,7 +641,7 @@ static int do_show(int argc, char **argv)
|
||||||
if (show_pinned) {
|
if (show_pinned) {
|
||||||
prog_table = hashmap__new(hash_fn_for_key_as_id,
|
prog_table = hashmap__new(hash_fn_for_key_as_id,
|
||||||
equal_fn_for_key_as_id, NULL);
|
equal_fn_for_key_as_id, NULL);
|
||||||
if (!prog_table) {
|
if (IS_ERR(prog_table)) {
|
||||||
p_err("failed to create hashmap for pinned paths");
|
p_err("failed to create hashmap for pinned paths");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue