diff options
author | Jiri Olsa <jolsa@kernel.org> | 2020-01-23 17:15:07 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2020-01-25 07:12:40 -0800 |
commit | e9b4e606c2289d6610113253922bb8c9ac7f68b0 (patch) | |
tree | 93b15ceadb74925c45742b98e876fe573f5bd74a /kernel/bpf/dispatcher.c | |
parent | 84ad7a7ab69f112c0c4b878c9be91b950a1fb1f8 (diff) | |
download | linux-e9b4e606c2289d6610113253922bb8c9ac7f68b0.tar.gz |
bpf: Allow to resolve bpf trampoline and dispatcher in unwind
When unwinding the stack we need to identify each address to successfully continue. Adding latch tree to keep trampolines for quick lookup during the unwind. The patch uses first 48 bytes for latch tree node, leaving 4048 bytes from the rest of the page for trampoline or dispatcher generated code. It's still enough not to affect trampoline and dispatcher progs maximum counts. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20200123161508.915203-3-jolsa@kernel.org
Diffstat (limited to 'kernel/bpf/dispatcher.c')
-rw-r--r-- | kernel/bpf/dispatcher.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/bpf/dispatcher.c b/kernel/bpf/dispatcher.c index 204ee61a3904..b3e5b214fed8 100644 --- a/kernel/bpf/dispatcher.c +++ b/kernel/bpf/dispatcher.c @@ -113,7 +113,7 @@ static void bpf_dispatcher_update(struct bpf_dispatcher *d, int prev_num_progs) noff = 0; } else { old = d->image + d->image_off; - noff = d->image_off ^ (PAGE_SIZE / 2); + noff = d->image_off ^ (BPF_IMAGE_SIZE / 2); } new = d->num_progs ? d->image + noff : NULL; @@ -140,7 +140,7 @@ void bpf_dispatcher_change_prog(struct bpf_dispatcher *d, struct bpf_prog *from, mutex_lock(&d->mutex); if (!d->image) { - d->image = bpf_jit_alloc_exec_page(); + d->image = bpf_image_alloc(); if (!d->image) goto out; } |