bpf: Fix dispatcher patchable function entry to 5 bytes nop
authorJiri Olsa <jolsa@kernel.org>
Tue, 18 Oct 2022 07:59:34 +0000 (09:59 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 21 Oct 2022 01:57:51 +0000 (18:57 -0700)
commitdbe69b29988465b011f198f2797b1c2b6980b50e
treed060772885a0e15050fe1e1eb96697e61ee25ef3
parentea68376c8bed5cd156900852aada20c3a0874d17
bpf: Fix dispatcher patchable function entry to 5 bytes nop

The patchable_function_entry(5) might output 5 single nop
instructions (depends on toolchain), which will clash with
bpf_arch_text_poke check for 5 bytes nop instruction.

Adding early init call for dispatcher that checks and change
the patchable entry into expected 5 nop instruction if needed.

There's no need to take text_mutex, because we are using it
in early init call which is called at pre-smp time.

Fixes: ceea991a019c ("bpf: Move bpf_dispatcher function out of ftrace locations")
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20221018075934.574415-1-jolsa@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
arch/x86/net/bpf_jit_comp.c
include/linux/bpf.h
kernel/bpf/dispatcher.c