selftests/bpf: Use bpf_num_possible_cpus() in per-cpu map allocations
authorArtem Savkov <asavkov@redhat.com>
Wed, 6 Apr 2022 08:54:08 +0000 (10:54 +0200)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 6 Apr 2022 17:15:53 +0000 (10:15 -0700)
commitebaf24c589d7c714b763a80856d1a6df3ba25b84
tree1158cf2b5a2c53d107fc12fc444c7b9d16f2486f
parenta8d600f6bcd453f1807703b5a016212f5484ffa1
selftests/bpf: Use bpf_num_possible_cpus() in per-cpu map allocations

bpf_map_value_size() uses num_possible_cpus() to determine map size, but
some of the tests only allocate enough memory for online cpus. This
results in out-of-bound writes in userspace during bpf(BPF_MAP_LOOKUP_ELEM)
syscalls in cases when number of online cpus is lower than the number of
possible cpus. Fix by switching from get_nprocs_conf() to
bpf_num_possible_cpus() when determining the number of processors in
these tests (test_progs/netcnt and test_cgroup_storage).

Signed-off-by: Artem Savkov <asavkov@redhat.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20220406085408.339336-1-asavkov@redhat.com
tools/testing/selftests/bpf/prog_tests/netcnt.c
tools/testing/selftests/bpf/test_cgroup_storage.c