Kernel Live Patch (livepatch, or klp) and bpf trampoline are important features for modern systems. This set allows the two to work on the same kernel function as the same time. live patch uses ftrace with IPMODIFY, while bpf trampoline use direct ftrace. Existing policy does not allow the two to attach to the same kernel function. This is changed by fine tuning ftrace IPMODIFY policy, and allows one non-DIRECT IPMODIFY ftrace_ops and one non-IPMODIFY DIRECT ftrace_ops on the same kernel function at the same time. Please see 3/5 for more details on this. Note that, one of the constraint here is to let bpf trampoline use direct call when it is not working on the same function as live patch. This is achieved by allowing ftrace code to ask bpf trampoline to make changes. Jiri Olsa (1): bpf, x64: Allow to use caller address from stack Song Liu (4): ftrace: allow customized flags for ftrace_direct_multi ftrace_ops ftrace: add modify_ftrace_direct_multi_nolock ftrace: introduce FTRACE_OPS_FL_SHARE_IPMODIFY bpf: trampoline: support FTRACE_OPS_FL_SHARE_IPMODIFY arch/x86/net/bpf_jit_comp.c | 13 +- include/linux/bpf.h | 8 ++ include/linux/ftrace.h | 79 +++++++++++ kernel/bpf/trampoline.c | 100 ++++++++++++-- kernel/trace/ftrace.c | 269 +++++++++++++++++++++++++++++++----- 5 files changed, 416 insertions(+), 53 deletions(-) -- 2.30.2