]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
libbpf, hashmap: Fix undefined behavior in hash_bits
authorIan Rogers <irogers@google.com>
Thu, 29 Oct 2020 22:37:07 +0000 (15:37 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Nov 2020 18:22:16 +0000 (19:22 +0100)
commit41836573a2cdd642f8d3138ef467e7d50ab5b68d
tree59e36d3f05565b828728bae647a48622dc32c27b
parent8361fb42232d2c43daa5cf5267af44f9f6bfac96
libbpf, hashmap: Fix undefined behavior in hash_bits

[ Upstream commit 7a078d2d18801bba7bde7337a823d7342299acf7 ]

If bits is 0, the case when the map is empty, then the >> is the size of
the register which is undefined behavior - on x86 it is the same as a
shift by 0.

Fix by handling the 0 case explicitly and guarding calls to hash_bits for
empty maps in hashmap__for_each_key_entry and hashmap__for_each_entry_safe.

Fixes: e3b924224028 ("libbpf: add resizable non-thread safe internal hashmap")
Suggested-by: Andrii Nakryiko <andriin@fb.com>,
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/20201029223707.494059-1-irogers@google.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
tools/lib/bpf/hashmap.h