riscv, bpf: Fix out-of-bounds issue when preparing trampoline image
authorPu Lehui <pulehui@huawei.com>
Sat, 22 Jun 2024 03:04:36 +0000 (03:04 +0000)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 1 Jul 2024 15:10:46 +0000 (17:10 +0200)
commit9f1e16fb1fc9826001c69e0551d51fbbcd2d74e9
treef366bcd2adfc8d82678325158ee437a5889fcea7
parentd1a426171d76b2cdf3dea5d52f6266090e4aa254
riscv, bpf: Fix out-of-bounds issue when preparing trampoline image

We get the size of the trampoline image during the dry run phase and
allocate memory based on that size. The allocated image will then be
populated with instructions during the real patch phase. But after
commit 26ef208c209a ("bpf: Use arch_bpf_trampoline_size"), the `im`
argument is inconsistent in the dry run and real patch phase. This may
cause emit_imm in RV64 to generate a different number of instructions
when generating the 'im' address, potentially causing out-of-bounds
issues. Let's emit the maximum number of instructions for the "im"
address during dry run to fix this problem.

Fixes: 26ef208c209a ("bpf: Use arch_bpf_trampoline_size")
Signed-off-by: Pu Lehui <pulehui@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20240622030437.3973492-3-pulehui@huaweicloud.com
arch/riscv/net/bpf_jit_comp64.c