[SRU][jammy][PATCH v3 0/5] ftrace graph return address recovery support for s390x Livepatch
John Cabaj
john.cabaj at canonical.com
Thu Apr 6 15:12:28 UTC 2023
BugLink: https://bugs.launchpad.net/bugs/2013603 (Kernel livepatch ftrace graph fix)
[Impact]
* Additional patches required to support Livepatch for s390x
* Fixes Livepatch transition issues when using ftrace graph tracing
* Requisite functionality is introduced in "390/unwind: recover kretprobe modified return address in stacktrace" and "s390/unwind: fix fgraph return address recovery"
* Additional patches to kprobes required to introduce is_kretprobe_trampoline() and kretprobe_find_ret_addr()
[Fix]
c574883b9de8 ("kprobes: treewide: Remove trampoline_address from kretprobe_trampoline_handler()")
2726cf7071be ("kprobes: treewide: Make it harder to refer kretprobe_trampoline directly")
d32f6425c25b ("kprobes: Add kretprobe_find_ret_addr() for searching return address")
3f5bf344cb0a ("390/unwind: recover kretprobe modified return address in stacktrace")
faf9293c5088 ("s390/unwind: fix fgraph return address recovery")
[Test Case]
* Compile tested
* Boot tested
* Tested a Livepatch (patch to /proc/meminfo module)
* Tested Livepatch from ftrace graphed function (via https://github.com/SUSE/qa_test_klp/, klp_tc_10.sh)
[Other Info]
* kprobes changes don't relate to Livepatch directly, but to the ftrace graph unwinding, which requires changes to fix return address recovery
* kprobes changes largely required to implement new functionality (functions discussed above) and updating function signatures
[Where things could go wrong]
* Functionality already exists upstream, kernel was boot and Livepatch tested
* Adding functionality, and updating function signatures, issues would likely arise during build process
* Regression potential is low
-v3:
* Fixing application issues due to recent kprobes changes since previous patch submission, likely c3694073333c
* Updating cover letter with more clarity
-v2:
* Created new BugLink
Masami Hiramatsu (3):
kprobes: treewide: Remove trampoline_address from
kretprobe_trampoline_handler()
kprobes: treewide: Make it harder to refer kretprobe_trampoline
directly
kprobes: Add kretprobe_find_ret_addr() for searching return address
Sumanth Korikkar (1):
s390/unwind: fix fgraph return address recovery
Vasily Gorbik (1):
s390/unwind: recover kretprobe modified return address in stacktrace
arch/arc/include/asm/kprobes.h | 2 +-
arch/arc/kernel/kprobes.c | 13 +-
arch/arm/probes/kprobes/core.c | 9 +-
arch/arm64/include/asm/kprobes.h | 2 +-
arch/arm64/kernel/probes/kprobes.c | 5 +-
arch/arm64/kernel/probes/kprobes_trampoline.S | 4 +-
arch/csky/include/asm/kprobes.h | 2 +-
arch/csky/kernel/probes/kprobes.c | 4 +-
arch/csky/kernel/probes/kprobes_trampoline.S | 4 +-
arch/ia64/kernel/kprobes.c | 11 +-
arch/mips/kernel/kprobes.c | 15 ++-
arch/parisc/kernel/kprobes.c | 6 +-
arch/powerpc/include/asm/kprobes.h | 2 +-
arch/powerpc/kernel/kprobes.c | 18 +--
arch/powerpc/kernel/optprobes.c | 2 +-
arch/powerpc/kernel/stacktrace.c | 2 +-
arch/riscv/include/asm/kprobes.h | 2 +-
arch/riscv/kernel/probes/kprobes.c | 4 +-
arch/riscv/kernel/probes/kprobes_trampoline.S | 4 +-
arch/s390/include/asm/kprobes.h | 2 +-
arch/s390/include/asm/unwind.h | 13 ++
arch/s390/kernel/kprobes.c | 12 +-
arch/s390/kernel/stacktrace.c | 2 +-
arch/s390/kernel/unwind_bc.c | 8 +-
arch/sh/include/asm/kprobes.h | 2 +-
arch/sh/kernel/kprobes.c | 12 +-
arch/sparc/include/asm/kprobes.h | 2 +-
arch/sparc/kernel/kprobes.c | 12 +-
arch/x86/include/asm/kprobes.h | 1 -
arch/x86/kernel/kprobes/core.c | 20 ++--
include/linux/kprobes.h | 40 ++++++-
kernel/kprobes.c | 112 +++++++++++++-----
kernel/trace/trace_output.c | 2 +-
33 files changed, 221 insertions(+), 130 deletions(-)
--
2.34.1
More information about the kernel-team
mailing list