Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

selftests/bpf: Add test for abnormal cnt during multi-kprobe attachment

If an abnormally huge cnt is used for multi-kprobes attachment, the
following warning will be reported:

------------[ cut here ]------------
WARNING: CPU: 1 PID: 392 at mm/util.c:632 kvmalloc_node+0xd9/0xe0
Modules linked in: bpf_testmod(O)
CPU: 1 PID: 392 Comm: test_progs Tainted: G ...... 6.7.0-rc3+ #32
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)
......
RIP: 0010:kvmalloc_node+0xd9/0xe0
? __warn+0x89/0x150
? kvmalloc_node+0xd9/0xe0
bpf_kprobe_multi_link_attach+0x87/0x670
__sys_bpf+0x2a28/0x2bc0
__x64_sys_bpf+0x1a/0x30
do_syscall_64+0x36/0xb0
entry_SYSCALL_64_after_hwframe+0x6e/0x76
RIP: 0033:0x7fbe067f0e0d
......
</TASK>
---[ end trace 0000000000000000 ]---

So add a test to ensure the warning is fixed.

Signed-off-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20231215100708.2265609-6-houtao@huaweicloud.com

authored by

Hou Tao and committed by
Daniel Borkmann
1467affd 00cdcd29

+15
+15
tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c
··· 306 306 if (!ASSERT_EQ(saved_error, -EINVAL, "fail_5_error")) 307 307 goto cleanup; 308 308 309 + /* fail_6 - abnormal cnt */ 310 + opts.addrs = (const unsigned long *) addrs; 311 + opts.syms = NULL; 312 + opts.cnt = INT_MAX; 313 + opts.cookies = NULL; 314 + 315 + link = bpf_program__attach_kprobe_multi_opts(skel->progs.test_kprobe_manual, 316 + NULL, &opts); 317 + saved_error = -errno; 318 + if (!ASSERT_ERR_PTR(link, "fail_6")) 319 + goto cleanup; 320 + 321 + if (!ASSERT_EQ(saved_error, -E2BIG, "fail_6_error")) 322 + goto cleanup; 323 + 309 324 cleanup: 310 325 bpf_link__destroy(link); 311 326 kprobe_multi__destroy(skel);