selftests/bpf: Fix the missing tramp_1 to tramp_40 ops in cfi_stubs
The tramp_1 to tramp_40 ops is not set in the cfi_stubs in the bpf_testmod_ops. It fails the struct_ops_multi_pages test after retiring the unsupported_ops in the earlier patch. This patch initializes them in a loop during the bpf_testmod_init(). Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Link: https://lore.kernel.org/r/20240722183049.2254692-3-martin.lau@linux.dev Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
This commit is contained in:
committed by
Andrii Nakryiko
parent
e42ac14180
commit
e44b4fc40c
@@ -1024,6 +1024,11 @@ static void bpf_testmod_test_2(int a, int b)
|
||||
{
|
||||
}
|
||||
|
||||
static int bpf_testmod_tramp(int value)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bpf_testmod_ops__test_maybe_null(int dummy,
|
||||
struct task_struct *task__nullable)
|
||||
{
|
||||
@@ -1080,6 +1085,7 @@ static int bpf_testmod_init(void)
|
||||
.kfunc_btf_id = bpf_testmod_dtor_ids[1]
|
||||
},
|
||||
};
|
||||
void **tramp;
|
||||
int ret;
|
||||
|
||||
ret = register_btf_kfunc_id_set(BPF_PROG_TYPE_UNSPEC, &bpf_testmod_common_kfunc_set);
|
||||
@@ -1103,6 +1109,14 @@ static int bpf_testmod_init(void)
|
||||
ret = register_bpf_testmod_uprobe();
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
/* Ensure nothing is between tramp_1..tramp_40 */
|
||||
BUILD_BUG_ON(offsetof(struct bpf_testmod_ops, tramp_1) + 40 * sizeof(long) !=
|
||||
offsetofend(struct bpf_testmod_ops, tramp_40));
|
||||
tramp = (void **)&__bpf_testmod_ops.tramp_1;
|
||||
while (tramp <= (void **)&__bpf_testmod_ops.tramp_40)
|
||||
*tramp++ = bpf_testmod_tramp;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user