summaryrefslogtreecommitdiffstats
path: root/tools/bpf
diff options
context:
space:
mode:
authorQuentin Monnet <quentin@isovalent.com>2020-09-10 12:26:51 +0200
committerAlexei Starovoitov <ast@kernel.org>2020-09-11 02:29:20 +0200
commit86233ce35e4b886dc5998c72ec6158ed72150782 (patch)
tree196906206ab42c5c2e70f4eb4f5023962638a150 /tools/bpf
parenttools: bpftool: Clean up function to dump map entry (diff)
downloadlinux-86233ce35e4b886dc5998c72ec6158ed72150782.tar.xz
linux-86233ce35e4b886dc5998c72ec6158ed72150782.zip
tools: bpftool: Keep errors for map-of-map dumps if distinct from ENOENT
When dumping outer maps or prog_array maps, and on lookup failure, bpftool simply skips the entry with no error message. This is because the kernel returns non-zero when no value is found for the provided key, which frequently happen for those maps if they have not been filled. When such a case occurs, errno is set to ENOENT. It seems unlikely we could receive other error codes at this stage (we successfully retrieved map info just before), but to be on the safe side, let's skip the entry only if errno was ENOENT, and not for the other errors. v3: New patch Signed-off-by: Quentin Monnet <quentin@isovalent.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200910102652.10509-3-quentin@isovalent.com
Diffstat (limited to 'tools/bpf')
-rw-r--r--tools/bpf/bpftool/map.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c
index c8159cb4fb1e..d8581d5e98a1 100644
--- a/tools/bpf/bpftool/map.c
+++ b/tools/bpf/bpftool/map.c
@@ -240,8 +240,8 @@ print_entry_error(struct bpf_map_info *map_info, void *key, int lookup_errno)
* means there is no entry for that key. Do not print an error message
* in that case.
*/
- if (map_is_map_of_maps(map_info->type) ||
- map_is_map_of_progs(map_info->type))
+ if ((map_is_map_of_maps(map_info->type) ||
+ map_is_map_of_progs(map_info->type)) && lookup_errno == ENOENT)
return;
if (json_output) {