mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-12-18 08:36:21 +01:00
bpftool: Fix control flow graph segfault during edge creation
If the last instruction of a control flow graph building block is a BPF_CALL, an incorrect edge with e->dst set to NULL is created and results in a segfault during graph output. Ensure that BPF_CALL as last instruction of a building block is handled correctly and only generates a single edge unlike actual BPF_JUMP* instructions. Signed-off-by: Christoph Werle <christoph.werle@longjmp.de> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Tested-by: Quentin Monnet <qmo@kernel.org> Reviewed-by: Quentin Monnet <qmo@kernel.org> Link: https://lore.kernel.org/bpf/20250108220937.1470029-1-christoph.werle@longjmp.de
This commit is contained in:
parent
a43796b520
commit
defac894af
|
|
@ -302,6 +302,7 @@ static bool func_add_bb_edges(struct func_node *func)
|
|||
|
||||
insn = bb->tail;
|
||||
if (!is_jmp_insn(insn->code) ||
|
||||
BPF_OP(insn->code) == BPF_CALL ||
|
||||
BPF_OP(insn->code) == BPF_EXIT) {
|
||||
e->dst = bb_next(bb);
|
||||
e->flags |= EDGE_FLAG_FALLTHROUGH;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user