summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/progs/recursion.c
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@redhat.com>2021-10-03 18:49:25 +0200
committerAndrii Nakryiko <andrii@kernel.org>2021-10-06 12:34:02 -0700
commit189c83bdde850e1fc8bb347f813cdd8776ce7abf (patch)
tree624a8660d694d394402aac03f1543f2b26cae7dd /tools/testing/selftests/bpf/progs/recursion.c
parent929bef467771d4d5a22b9edb51a2025dc0e49113 (diff)
selftest/bpf: Switch recursion test to use htab_map_delete_elem
Currently the recursion test is hooking __htab_map_lookup_elem function, which is invoked both from bpf_prog and bpf syscall. But in our kernel build, the __htab_map_lookup_elem gets inlined within the htab_map_lookup_elem, so it's not trigered and the test fails. Fixing this by using htab_map_delete_elem, which is not inlined for bpf_prog calls (like htab_map_lookup_elem is) and is used directly as pointer for map_delete_elem, so it won't disappear by inlining. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Acked-by: Song Liu <songliubraving@fb.com> Link: https://lore.kernel.org/bpf/YVnfFTL/3T6jOwHI@krava
Diffstat (limited to 'tools/testing/selftests/bpf/progs/recursion.c')
-rw-r--r--tools/testing/selftests/bpf/progs/recursion.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/tools/testing/selftests/bpf/progs/recursion.c b/tools/testing/selftests/bpf/progs/recursion.c
index 49f679375b9d..3c2423bb19e2 100644
--- a/tools/testing/selftests/bpf/progs/recursion.c
+++ b/tools/testing/selftests/bpf/progs/recursion.c
@@ -24,8 +24,8 @@ struct {
int pass1 = 0;
int pass2 = 0;
-SEC("fentry/__htab_map_lookup_elem")
-int BPF_PROG(on_lookup, struct bpf_map *map)
+SEC("fentry/htab_map_delete_elem")
+int BPF_PROG(on_delete, struct bpf_map *map)
{
int key = 0;
@@ -35,10 +35,7 @@ int BPF_PROG(on_lookup, struct bpf_map *map)
}
if (map == (void *)&hash2) {
pass2++;
- /* htab_map_gen_lookup() will inline below call
- * into direct call to __htab_map_lookup_elem()
- */
- bpf_map_lookup_elem(&hash2, &key);
+ bpf_map_delete_elem(&hash2, &key);
return 0;
}