diff options
author | Song Liu <song@kernel.org> | 2023-12-06 23:40:52 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-12-07 02:17:20 +0100 |
commit | 96d1b7c081c0c96cbe8901045f4ff15a2e9974a2 (patch) | |
tree | 1c42f14146f5308976355f4d3d84b4cb4e91a420 /kernel | |
parent | bpf, x86: Adjust arch_prepare_bpf_trampoline return value (diff) | |
download | linux-96d1b7c081c0c96cbe8901045f4ff15a2e9974a2.tar.xz linux-96d1b7c081c0c96cbe8901045f4ff15a2e9974a2.zip |
bpf: Add arch_bpf_trampoline_size()
This helper will be used to calculate the size of the trampoline before
allocating the memory.
arch_prepare_bpf_trampoline() for arm64 and riscv64 can use
arch_bpf_trampoline_size() to check the trampoline fits in the image.
OTOH, arch_prepare_bpf_trampoline() for s390 has to call the JIT process
twice, so it cannot use arch_bpf_trampoline_size().
Signed-off-by: Song Liu <song@kernel.org>
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Tested-by: Ilya Leoshkevich <iii@linux.ibm.com> # on s390x
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Björn Töpel <bjorn@rivosinc.com>
Tested-by: Björn Töpel <bjorn@rivosinc.com> # on riscv
Link: https://lore.kernel.org/r/20231206224054.492250-6-song@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/bpf/trampoline.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c index affbcbf7e76e..b553cbd89e55 100644 --- a/kernel/bpf/trampoline.c +++ b/kernel/bpf/trampoline.c @@ -1072,6 +1072,12 @@ void __weak arch_unprotect_bpf_trampoline(void *image, unsigned int size) set_memory_rw((long)image, 1); } +int __weak arch_bpf_trampoline_size(const struct btf_func_model *m, u32 flags, + struct bpf_tramp_links *tlinks, void *func_addr) +{ + return -ENOTSUPP; +} + static int __init init_trampolines(void) { int i; |