Jonathan Lemon
da2577fdd0
bpf: lpm_trie: check left child of last leftmost node for NULL
...
If the leftmost parent node of the tree has does not have a child
on the left side, then trie_get_next_key (and bpftool map dump) will
not look at the child on the right. This leads to the traversal
missing elements.
Lookup is not affected.
Update selftest to handle this case.
Reproducer:
bpftool map create /sys/fs/bpf/lpm type lpm_trie key 6 \
value 1 entries 256 name test_lpm flags 1
bpftool map update pinned /sys/fs/bpf/lpm key 8 0 0 0 0 0 value 1
bpftool map update pinned /sys/fs/bpf/lpm key 16 0 0 0 0 128 value 2
bpftool map dump pinned /sys/fs/bpf/lpm
Returns only 1 element. (2 expected)
Fixes: b471f2f1de ("bpf: implement MAP_GET_NEXT_KEY command for LPM_TRIE")
Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2019-06-11 13:52:37 +02:00
..
arraymap.c
bpf: allow for key-less BTF in array map
2019-04-09 17:05:46 -07:00
bpf_lru_list.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
bpf_lru_list.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
btf.c
bpf: allow for key-less BTF in array map
2019-04-09 17:05:46 -07:00
cgroup.c
bpf: add map helper functions push, pop, peek in more BPF programs
2019-04-16 10:24:02 +02:00
core.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
2019-05-30 11:26:32 -07:00
cpumap.c
bpf: cpumap memory prefetchw optimizations for struct page
2019-04-17 19:09:25 -07:00
devmap.c
bpf: devmap: fix use-after-free Read in __dev_map_entry_free
2019-05-14 01:25:49 +02:00
disasm.c
bpf: implement lookup-free direct value access for maps
2019-04-09 17:05:46 -07:00
disasm.h
hashtab.c
bpf, lru: avoid messing with eviction heuristics upon syscall lookup
2019-05-14 10:47:29 -07:00
helpers.c
bpf: Introduce bpf_strtol and bpf_strtoul helpers
2019-04-12 13:54:59 -07:00
inode.c
bpf: relax inode permission check for retrieving bpf program
2019-05-16 11:31:49 -07:00
local_storage.c
bpf: add program side {rd, wr}only support for maps
2019-04-09 17:05:46 -07:00
lpm_trie.c
bpf: lpm_trie: check left child of last leftmost node for NULL
2019-06-11 13:52:37 +02:00
Makefile
bpf: add queue and stack maps
2018-10-19 13:24:31 -07:00
map_in_map.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
map_in_map.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
offload.c
bpf: offload: add priv field for drivers
2019-02-12 17:07:09 +01:00
percpu_freelist.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
percpu_freelist.h
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
queue_stack_maps.c
bpf: add program side {rd, wr}only support for maps
2019-04-09 17:05:46 -07:00
reuseport_array.c
stackmap.c
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 206
2019-05-30 11:29:53 -07:00
syscall.c
bpf: fix unconnected udp hooks
2019-06-06 16:53:12 -07:00
tnum.c
treewide: Add SPDX license identifier for missed files
2019-05-21 10:50:45 +02:00
verifier.c
bpf: fix unconnected udp hooks
2019-06-06 16:53:12 -07:00
xskmap.c