diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2017-06-06 17:00:22 +0000 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2017-06-07 11:52:02 +0100 |
commit | e71a4e1bebaf7fd990efbdc04b38e5526914f0f1 (patch) | |
tree | 0f8906d0ba3979cd8020dd896aa6d764afb360df /arch/arm64/Kconfig | |
parent | f8af0b364e249eef0c71200826563947cd74267e (diff) | |
download | lwn-e71a4e1bebaf7fd990efbdc04b38e5526914f0f1.tar.gz lwn-e71a4e1bebaf7fd990efbdc04b38e5526914f0f1.zip |
arm64: ftrace: add support for far branches to dynamic ftrace
Currently, dynamic ftrace support in the arm64 kernel assumes that all
core kernel code is within range of ordinary branch instructions that
occur in module code, which is usually the case, but is no longer
guaranteed now that we have support for module PLTs and address space
randomization.
Since on arm64, all patching of branch instructions involves function
calls to the same entry point [ftrace_caller()], we can emit the modules
with a trampoline that has unlimited range, and patch both the trampoline
itself and the branch instruction to redirect the call via the trampoline.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
[will: minor clarification to smp_wmb() comment]
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/Kconfig')
-rw-r--r-- | arch/arm64/Kconfig | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 3dcd7ec69bca..22f769b254b4 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -982,7 +982,7 @@ config RANDOMIZE_BASE config RANDOMIZE_MODULE_REGION_FULL bool "Randomize the module region independently from the core kernel" - depends on RANDOMIZE_BASE && !DYNAMIC_FTRACE + depends on RANDOMIZE_BASE default y help Randomizes the location of the module region without considering the |