On 2015/4/24 10:44, AKASHI Takahiro wrote:
This patchset enables livepatch support on arm64.
Livepatch was merged in v4.0, and allows replacying a function dynamically
based on ftrace framework, but it also requires -mfentry option of gcc.
Currently arm64 gcc doesn't support it, but by adding a helper function to
ftrace, we will be able to support livepatch on arch's which don't support
this option.
This is not correct for the case that the prologue of the old and new function
is different.
Thanks,
Li Bin
I submit this patchset as RFC since I'm not quite sure that I'm doing
in the right way, or we should definitely support -fentry instead.
Please note that I tested the feature only with livepatch-sample, and
the code for DYNAMIC_TRACE_WITH_REGS is still rough-edged.
To: Steven Rostedt <rostedt@goodmis.org>
To: Ingo Molnar <mingo@kernel.org>
To: Josh Poimboeuf <redacted>
To: Seth Jennings <redacted>
To: Jiri Kosina <redacted>
To: Vojtech Pavlik <redacted>
To: Catalin Marinas <catalin.marinas@arm.com>
To: Will Deacon <redacted>
AKASHI Takahiro (4):
ftrace: add a helper function for livepatch
livepatch: adjust a patched function's address
arm64: ftrace: add DYNAMIC_TRACE_WITH_REGS version
arm64: add livepatch support
arch/arm64/Kconfig | 4 ++
arch/arm64/include/asm/ftrace.h | 4 ++
arch/arm64/include/asm/livepatch.h | 38 +++++++++++
arch/arm64/kernel/Makefile | 1 +
arch/arm64/kernel/entry-ftrace.S | 124 ++++++++++++++++++++++++++++++++++++
arch/arm64/kernel/ftrace.c | 24 ++++++-
arch/arm64/kernel/livepatch.c | 68 ++++++++++++++++++++
arch/x86/include/asm/livepatch.h | 5 ++
include/linux/ftrace.h | 2 +
include/linux/livepatch.h | 2 +
kernel/livepatch/core.c | 16 +++--
kernel/trace/ftrace.c | 26 ++++++++
12 files changed, 309 insertions(+), 5 deletions(-)
create mode 100644 arch/arm64/include/asm/livepatch.h
create mode 100644 arch/arm64/kernel/livepatch.c