aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/trace_helpers.c
diff options
context:
space:
mode:
authorXu Kuohai <xukuohai@huawei.com>2022-04-02 03:39:42 -0400
committerDaniel Borkmann <daniel@iogearbox.net>2022-04-06 00:04:22 +0200
commit042152c27c3bc3e20882f75c289ced32331f4010 (patch)
treeae90f31a102b5e3d55e8e974fb8622ea0c8a4566 /tools/testing/selftests/bpf/trace_helpers.c
parentMerge branch 'Add libbpf support for USDTs' (diff)
downloadlinux-dev-042152c27c3bc3e20882f75c289ced32331f4010.tar.xz
linux-dev-042152c27c3bc3e20882f75c289ced32331f4010.zip
bpf, arm64: Sign return address for JITed code
Sign return address for JITed code when the kernel is built with pointer authentication enabled: 1. Sign LR with paciasp instruction before LR is pushed to stack. Since paciasp acts like landing pads for function entry, no need to insert bti instruction before paciasp. 2. Authenticate LR with autiasp instruction after LR is popped from stack. For BPF tail call, the stack frame constructed by the caller is reused by the callee. That is, the stack frame is constructed by the caller and destructed by the callee. Thus LR is signed and pushed to the stack in the caller's prologue, and poped from the stack and authenticated in the callee's epilogue. For BPF2BPF call, the caller and callee construct their own stack frames, and sign and authenticate their own LRs. Signed-off-by: Xu Kuohai <xukuohai@huawei.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://events.static.linuxfound.org/sites/events/files/slides/slides_23.pdf Link: https://lore.kernel.org/bpf/20220402073942.3782529-1-xukuohai@huawei.com
Diffstat (limited to 'tools/testing/selftests/bpf/trace_helpers.c')
0 files changed, 0 insertions, 0 deletions