summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/progs/kfunc_module_order.c
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2024-10-24 18:45:59 -0700
committerAlexei Starovoitov <ast@kernel.org>2024-10-24 18:47:28 -0700
commitbfa7b5c98be4bdcf8aaa4e5ca0b91359ea28c05c (patch)
tree751b70005cb6641c42e90191f35dac731459a6ec /tools/testing/selftests/bpf/progs/kfunc_module_order.c
parentc6fb8030b4baa01c850f99fc6da051b1017edc46 (diff)
parentae90f6a6170d7a7a1aa4fddf664fbd093e3023bc (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
Cross-merge bpf fixes after downstream PR. No conflicts. Adjacent changes in: include/linux/bpf.h include/uapi/linux/bpf.h kernel/bpf/btf.c kernel/bpf/helpers.c kernel/bpf/syscall.c kernel/bpf/verifier.c kernel/trace/bpf_trace.c mm/slab_common.c tools/include/uapi/linux/bpf.h tools/testing/selftests/bpf/Makefile Link: https://lore.kernel.org/all/20241024215724.60017-1-daniel@iogearbox.net/ Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools/testing/selftests/bpf/progs/kfunc_module_order.c')
-rw-r--r--tools/testing/selftests/bpf/progs/kfunc_module_order.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/kfunc_module_order.c b/tools/testing/selftests/bpf/progs/kfunc_module_order.c
new file mode 100644
index 000000000000..76003d04c95f
--- /dev/null
+++ b/tools/testing/selftests/bpf/progs/kfunc_module_order.c
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <linux/bpf.h>
+#include <bpf/bpf_helpers.h>
+
+extern int bpf_test_modorder_retx(void) __ksym;
+extern int bpf_test_modorder_rety(void) __ksym;
+
+SEC("classifier")
+int call_kfunc_xy(struct __sk_buff *skb)
+{
+ int ret1, ret2;
+
+ ret1 = bpf_test_modorder_retx();
+ ret2 = bpf_test_modorder_rety();
+
+ return ret1 == 'x' && ret2 == 'y' ? 0 : -1;
+}
+
+SEC("classifier")
+int call_kfunc_yx(struct __sk_buff *skb)
+{
+ int ret1, ret2;
+
+ ret1 = bpf_test_modorder_rety();
+ ret2 = bpf_test_modorder_retx();
+
+ return ret1 == 'y' && ret2 == 'x' ? 0 : -1;
+}
+
+char _license[] SEC("license") = "GPL";