From: Hou Tao <houtao1@xxxxxxxxxx> Add a test to verify the multiplication overflow of nr_bits in bits_iter. When nr_words is assigned as 67108865, nr_bits becomes 64, causing bpf_probe_read_kernel_common() to corrupt the stack. Signed-off-by: Hou Tao <houtao1@xxxxxxxxxx> --- .../selftests/bpf/progs/verifier_bits_iter.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/testing/selftests/bpf/progs/verifier_bits_iter.c b/tools/testing/selftests/bpf/progs/verifier_bits_iter.c index f4da4d508ddb..344b7eac15c8 100644 --- a/tools/testing/selftests/bpf/progs/verifier_bits_iter.c +++ b/tools/testing/selftests/bpf/progs/verifier_bits_iter.c @@ -151,3 +151,17 @@ int zero_words(void) nr++; return nr; } + +SEC("syscall") +__description("big words") +__success __retval(0) +int big_words(void) +{ + u64 data[8] = {0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1}; + int nr = 0; + int *bit; + + bpf_for_each(bits, bit, &data[0], 67108865) + nr++; + return nr; +} -- 2.29.2