diff options
| author | Kumar Kartikeya Dwivedi <[email protected]> | 2025-07-03 20:48:11 +0000 |
|---|---|---|
| committer | Alexei Starovoitov <[email protected]> | 2025-07-04 02:30:06 +0000 |
| commit | f0c53fd4a742f957da7077a691a85ef9775907dc (patch) | |
| tree | 3d6ee430c7c0626e89e4ccb7661105166f49f4e1 /arch/x86/net/bpf_jit_comp.c | |
| parent | bpf: Ensure RCU lock is held around bpf_prog_ksym_find (diff) | |
| download | kernel-f0c53fd4a742f957da7077a691a85ef9775907dc.tar.gz kernel-f0c53fd4a742f957da7077a691a85ef9775907dc.zip | |
bpf: Add function to find program from stack trace
In preparation of figuring out the closest program that led to the
current point in the kernel, implement a function that scans through the
stack trace and finds out the closest BPF program when walking down the
stack trace.
Special care needs to be taken to skip over kernel and BPF subprog
frames. We basically scan until we find a BPF main prog frame. The
assumption is that if a program calls into us transitively, we'll
hit it along the way. If not, we end up returning NULL.
Contextually the function will be used in places where we know the
program may have called into us.
Due to reliance on arch_bpf_stack_walk(), this function only works on
x86 with CONFIG_UNWINDER_ORC, arm64, and s390. Remove the warning from
arch_bpf_stack_walk as well since we call it outside bpf_throw()
context.
Acked-by: Eduard Zingerman <[email protected]>
Reviewed-by: Emil Tsalapatis <[email protected]>
Signed-off-by: Kumar Kartikeya Dwivedi <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Alexei Starovoitov <[email protected]>
Diffstat (limited to 'arch/x86/net/bpf_jit_comp.c')
| -rw-r--r-- | arch/x86/net/bpf_jit_comp.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c index 15672cb926fc..40e1b3b9634f 100644 --- a/arch/x86/net/bpf_jit_comp.c +++ b/arch/x86/net/bpf_jit_comp.c @@ -3845,7 +3845,6 @@ void arch_bpf_stack_walk(bool (*consume_fn)(void *cookie, u64 ip, u64 sp, u64 bp } return; #endif - WARN(1, "verification of programs using bpf_throw should have failed\n"); } void bpf_arch_poke_desc_update(struct bpf_jit_poke_descriptor *poke, |
