bpftool: Adjust for error codes from libbpf probes
authorMilan Landaverde <milan@mdaverde.com>
Wed, 4 May 2022 16:13:31 +0000 (12:13 -0400)
committerAndrii Nakryiko <andrii@kernel.org>
Tue, 10 May 2022 00:16:05 +0000 (17:16 -0700)
Originally [1], libbpf's (now deprecated) probe functions returned a bool
to acknowledge support but the new APIs return an int with a possible
negative error code to reflect probe failure. This change decides for
bpftool to declare maps and helpers are not available on probe failures.

[1]: https://lore.kernel.org/bpf/20220202225916.3313522-3-andrii@kernel.org/

Signed-off-by: Milan Landaverde <milan@mdaverde.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220504161356.3497972-2-milan@mdaverde.com
tools/bpf/bpftool/feature.c

index be130e35462f3dd8e4279748de02aa429b5a6960..c532c8855c2409ce543343159e5d0b21dd6db7dd 100644 (file)
@@ -638,7 +638,7 @@ probe_map_type(enum bpf_map_type map_type, const char *define_prefix,
 
                res = probe_map_type_ifindex(map_type, ifindex);
        } else {
-               res = libbpf_probe_bpf_map_type(map_type, NULL);
+               res = libbpf_probe_bpf_map_type(map_type, NULL) > 0;
        }
 
        /* Probe result depends on the success of map creation, no additional
@@ -701,7 +701,7 @@ probe_helper_for_progtype(enum bpf_prog_type prog_type, bool supported_type,
                if (ifindex)
                        res = probe_helper_ifindex(id, prog_type, ifindex);
                else
-                       res = libbpf_probe_bpf_helper(prog_type, id, NULL);
+                       res = libbpf_probe_bpf_helper(prog_type, id, NULL) > 0;
 #ifdef USE_LIBCAP
                /* Probe may succeed even if program load fails, for
                 * unprivileged users check that we did not fail because of