]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
bpf, x86: Adjust arch_prepare_bpf_trampoline return value
authorSong Liu <song@kernel.org>
Wed, 6 Dec 2023 22:40:51 +0000 (14:40 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 7 Dec 2023 01:17:20 +0000 (17:17 -0800)
x86's implementation of arch_prepare_bpf_trampoline() requires
BPF_INSN_SAFETY buffer space between end of program and image_end. OTOH,
the return value does not include BPF_INSN_SAFETY. This doesn't cause any
real issue at the moment. However, "image" of size retval is not enough for
arch_prepare_bpf_trampoline(). This will cause confusion when we introduce
a new helper arch_bpf_trampoline_size(). To avoid future confusion, adjust
the return value to include BPF_INSN_SAFETY.

Signed-off-by: Song Liu <song@kernel.org>
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20231206224054.492250-5-song@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/x86/net/bpf_jit_comp.c

index 8c10d9abc2394fc43f75f3324dd8d0e42c3f797a..5f7528cac34471ae497338192ce016435b2a57f9 100644 (file)
@@ -2671,7 +2671,7 @@ int arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *image, void *i
                ret = -EFAULT;
                goto cleanup;
        }
-       ret = prog - (u8 *)image;
+       ret = prog - (u8 *)image + BPF_INSN_SAFETY;
 
 cleanup:
        kfree(branches);