summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/progs/struct_ops_module.c
diff options
context:
space:
mode:
authorKui-Feng Lee <thinker.li@gmail.com>2024-02-28 22:45:23 -0800
committerAndrii Nakryiko <andrii@kernel.org>2024-02-29 14:23:53 -0800
commit0623e73317940d052216fb6eef4efd55a0a7f602 (patch)
tree524cfad5f7755ea83210ec355b43fa650219b237 /tools/testing/selftests/bpf/progs/struct_ops_module.c
parentf2e81192e07e87897ff1296c96775eceea8f582a (diff)
selftests/bpf: Test if shadow types work correctly.
Change the values of fields, including scalar types and function pointers, and check if the struct_ops map works as expected. The test changes the field "test_2" of "testmod_1" from the pointer to test_2() to pointer to test_3() and the field "data" to 13. The function test_2() and test_3() both compute a new value for "test_2_result", but in different way. By checking the value of "test_2_result", it ensures the struct_ops map works as expected with changes through shadow types. Signed-off-by: Kui-Feng Lee <thinker.li@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20240229064523.2091270-6-thinker.li@gmail.com
Diffstat (limited to 'tools/testing/selftests/bpf/progs/struct_ops_module.c')
-rw-r--r--tools/testing/selftests/bpf/progs/struct_ops_module.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/struct_ops_module.c b/tools/testing/selftests/bpf/progs/struct_ops_module.c
index b78746b3cef3..25952fa09348 100644
--- a/tools/testing/selftests/bpf/progs/struct_ops_module.c
+++ b/tools/testing/selftests/bpf/progs/struct_ops_module.c
@@ -21,9 +21,17 @@ void BPF_PROG(test_2, int a, int b)
test_2_result = a + b;
}
+SEC("struct_ops/test_3")
+int BPF_PROG(test_3, int a, int b)
+{
+ test_2_result = a + b + 3;
+ return a + b + 3;
+}
+
SEC(".struct_ops.link")
struct bpf_testmod_ops testmod_1 = {
.test_1 = (void *)test_1,
.test_2 = (void *)test_2,
+ .data = 0x1,
};