bpf, lpm: Fix check prefixlen before walking trie
authorFlorian Lehner <dev@der-flo.net>
Sun, 5 Nov 2023 08:58:01 +0000 (09:58 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 10 Nov 2023 03:07:38 +0000 (19:07 -0800)
commit9b75dbeb36fcd9fc7ed51d370310d0518a387769
treed7a194a3c697a90c9b404db8c9f4d000c00021de
parentf2d2c7e1b7c9e8847478769d6e1f8a76b5e91952
bpf, lpm: Fix check prefixlen before walking trie

When looking up an element in LPM trie, the condition 'matchlen ==
trie->max_prefixlen' will never return true, if key->prefixlen is larger
than trie->max_prefixlen. Consequently all elements in the LPM trie will
be visited and no element is returned in the end.

To resolve this, check key->prefixlen first before walking the LPM trie.

Fixes: b95a5c4db09b ("bpf: add a longest prefix match trie map implementation")
Signed-off-by: Florian Lehner <dev@der-flo.net>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20231105085801.3742-1-dev@der-flo.net
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/bpf/lpm_trie.c