android_kernel_motorola_sm6375/arch
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Mark Rutland 6194b46897 arm64: module/ftrace: intialize PLT at load time
commit f1a54ae9af0da4d76239256ed640a93ab3aadac0 upstream.

Currently we lazily-initialize a module's ftrace PLT at runtime when we
install the first ftrace call. To do so we have to apply a number of
sanity checks, transiently mark the module text as RW, and perform an
IPI as part of handling Neoverse-N1 erratum #1542419.

We only expect the ftrace trampoline to point at ftrace_caller() (AKA
FTRACE_ADDR), so let's simplify all of this by intializing the PLT at
module load time, before the module loader marks the module RO and
performs the intial I-cache maintenance for the module.

Thus we can rely on the module having been correctly intialized, and can
simplify the runtime work necessary to install an ftrace call in a
module. This will also allow for the removal of module_disable_ro().

Tested by forcing ftrace_make_call() to use the module PLT, and then
loading up a module after setting up ftrace with:

| echo ":mod:<module-name>" > set_ftrace_filter;
| echo function > current_tracer;
| modprobe <module-name>

Since FTRACE_ADDR is only defined when CONFIG_DYNAMIC_FTRACE is
selected, we wrap its use along with most of module_init_ftrace_plt()
with ifdeffery rather than using IS_ENABLED().

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Torsten Duwe <duwe@suse.de>
Tested-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
Tested-by: Torsten Duwe <duwe@suse.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: James Morse <james.morse@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Cc: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-23 11:59:56 +01:00
..
alpha
arc
arm ARM: dts: imx6qdl-udoo: Properly describe the SD card detect 2022-02-16 12:52:50 +01:00
arm64 arm64: module/ftrace: intialize PLT at load time 2022-02-23 11:59:56 +01:00
c6x
csky perf: Protect perf_guest_cbs with RCU 2022-01-20 09:19:18 +01:00
h8300
hexagon
ia64 Revert "ia64: kprobes: Use generic kretprobe trampoline handler" 2022-01-27 09:19:56 +01:00
m68k
microblaze
mips MIPS: Octeon: Fix build errors using clang 2022-01-27 09:19:48 +01:00
nds32 perf: Protect perf_guest_cbs with RCU 2022-01-20 09:19:18 +01:00
nios2
openrisc
parisc module/ftrace: handle patchable-function-entry 2022-02-23 11:59:56 +01:00
powerpc powerpc/32: Fix boot failure with GCC latent entropy plugin 2022-02-01 17:24:36 +01:00
riscv riscv: fix build with binutils 2.38 2022-02-16 12:52:49 +01:00
s390 s390/hypfs: include z/VM guests with access control group set 2022-02-01 17:24:33 +01:00
sh
sparc
um um: registers: Rename function names to avoid conflicts and build problems 2022-01-27 09:19:45 +01:00
unicore32
x86 Revert "svm: Add warning message for AVIC IPI invalid target" 2022-02-23 11:59:54 +01:00
xtensa
.gitignore
Kconfig