aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorGravatar Jiri Olsa <jolsa@kernel.org> 2022-07-19 17:21:25 -0700
committerGravatar Daniel Borkmann <daniel@iogearbox.net> 2022-07-22 22:04:37 +0200
commit316cba62dfb7878b7353177e6a7da9cc0c979cde (patch)
tree5af366a623b898d85c7f7c56eb46be386a740e52 /kernel
parentftrace: Allow IPMODIFY and DIRECT ops on the same function (diff)
downloadlinux-316cba62dfb7878b7353177e6a7da9cc0c979cde.tar.gz
linux-316cba62dfb7878b7353177e6a7da9cc0c979cde.tar.bz2
linux-316cba62dfb7878b7353177e6a7da9cc0c979cde.zip
bpf, x64: Allow to use caller address from stack
Currently we call the original function by using the absolute address given at the JIT generation. That's not usable when having trampoline attached to multiple functions, or the target address changes dynamically (in case of live patch). In such cases we need to take the return address from the stack. Adding support to retrieve the original function address from the stack by adding new BPF_TRAMP_F_ORIG_STACK flag for arch_prepare_bpf_trampoline function. Basically we take the return address of the 'fentry' call: function + 0: call fentry # stores 'function + 5' address on stack function + 5: ... The 'function + 5' address will be used as the address for the original function to call. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Song Liu <song@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20220720002126.803253-4-song@kernel.org
Diffstat (limited to 'kernel')
0 files changed, 0 insertions, 0 deletions