summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/prog_tests/lru_bug.c
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2022-08-09 18:46:12 -0700
committerAlexei Starovoitov <ast@kernel.org>2022-08-09 18:46:12 -0700
commit46c8229c4317ba8576a206d285a34783390ba6ab (patch)
tree8b2a5de71b7b3f5cdbc9972a27724030ea1010d2 /tools/testing/selftests/bpf/prog_tests/lru_bug.c
parent19f68ed6dc90c93daf7e54d3350ea67fead7cbbf (diff)
parentde7b9927105bd2afe940c6ad22de6938edd8b1c1 (diff)
downloadlinux-46c8229c4317ba8576a206d285a34783390ba6ab.tar.gz
linux-46c8229c4317ba8576a206d285a34783390ba6ab.tar.bz2
linux-46c8229c4317ba8576a206d285a34783390ba6ab.zip
Merge branch 'Don't reinit map value in prealloc_lru_pop'
Kumar Kartikeya Dwivedi says: ==================== Fix for a bug in prealloc_lru_pop spotted while reading the code, then a test + example that checks whether it is fixed. Changelog: ---------- v2 -> v3: v2: https://lore.kernel.org/bpf/20220809140615.21231-1-memxor@gmail.com * Switch test to use kptr instead of kptr_ref to stabilize test runs * Fix missing lru_bug__destroy (Yonghong) * Collect Acks v1 -> v2: v1: https://lore.kernel.org/bpf/20220806014603.1771-1-memxor@gmail.com * Expand commit log to include summary of the discussion with Yonghong * Make lru_bug selftest serial to not mess up refcount for map_kptr test ==================== Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/lru_bug.c')
-rw-r--r--tools/testing/selftests/bpf/prog_tests/lru_bug.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/prog_tests/lru_bug.c b/tools/testing/selftests/bpf/prog_tests/lru_bug.c
new file mode 100644
index 000000000000..3c7822390827
--- /dev/null
+++ b/tools/testing/selftests/bpf/prog_tests/lru_bug.c
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <test_progs.h>
+
+#include "lru_bug.skel.h"
+
+void test_lru_bug(void)
+{
+ struct lru_bug *skel;
+ int ret;
+
+ skel = lru_bug__open_and_load();
+ if (!ASSERT_OK_PTR(skel, "lru_bug__open_and_load"))
+ return;
+ ret = lru_bug__attach(skel);
+ if (!ASSERT_OK(ret, "lru_bug__attach"))
+ goto end;
+ usleep(1);
+ ASSERT_OK(skel->data->result, "prealloc_lru_pop doesn't call check_and_init_map_value");
+end:
+ lru_bug__destroy(skel);
+}