diff options
author | Jiri Olsa <jolsa@redhat.com> | 2021-07-14 11:43:53 +0200 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2021-07-16 02:16:06 +0200 |
commit | 7e6f3cd89f04a0a577002d5696288b482109d25c (patch) | |
tree | dd610c2eeeeab77706fdbe55b881323d4b01dc9e /include/linux/bpf.h | |
parent | Merge branch 'bpf-timers' (diff) | |
download | linux-7e6f3cd89f04a0a577002d5696288b482109d25c.tar.xz linux-7e6f3cd89f04a0a577002d5696288b482109d25c.zip |
bpf, x86: Store caller's ip in trampoline stack
Storing caller's ip in trampoline's stack. Trampoline programs
can reach the IP in (ctx - 8) address, so there's no change in
program's arguments interface.
The IP address is takes from [fp + 8], which is return address
from the initial 'call fentry' call to trampoline.
This IP address will be returned via bpf_get_func_ip helper
helper, which is added in following patches.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210714094400.396467-2-jolsa@kernel.org
Diffstat (limited to '')
-rw-r--r-- | include/linux/bpf.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/bpf.h b/include/linux/bpf.h index a9a4a480a6d0..94d77dc7ce35 100644 --- a/include/linux/bpf.h +++ b/include/linux/bpf.h @@ -579,6 +579,11 @@ struct btf_func_model { */ #define BPF_TRAMP_F_SKIP_FRAME BIT(2) +/* Store IP address of the caller on the trampoline stack, + * so it's available for trampoline's programs. + */ +#define BPF_TRAMP_F_IP_ARG BIT(3) + /* Each call __bpf_prog_enter + call bpf_func + call __bpf_prog_exit is ~50 * bytes on x86. Pick a number to fit into BPF_IMAGE_SIZE / 2 */ |