bpftool: Fix control flow graph segfault during edge creation
authorChristoph Werle <christoph.werle@longjmp.de>
Wed, 8 Jan 2025 22:09:37 +0000 (23:09 +0100)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 10 Jan 2025 22:16:13 +0000 (14:16 -0800)
commitdefac894af93cb347fae0520fe8f14ca36f6fe87
tree9f98091dfacbc596023eb1504557623a647a3852
parenta43796b5201270b258b7a418c41816ec03393ce5
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
tools/bpf/bpftool/cfg.c