mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-16 06:51:42 +00:00
Add a test case for kfuncs from multiple external modules, checking that the correct kfuncs are called regardless of which order they're called in. Specifically, check that calling the kfuncs in an order different from the one the modules' BTF are loaded in works. Signed-off-by: Simon Sundberg <simon.sundberg@kau.se> Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> Link: https://lore.kernel.org/r/20241010-fix-kfunc-btf-caching-for-modules-v2-3-745af6c1af98@redhat.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
31 lines
618 B
C
31 lines
618 B
C
// 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";
|