mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 23:39:18 +00:00
bpftool: Fix bug for long instructions in program CFG dumps
When dumping the control flow graphs for programs using the 16-byte long load instruction, we need to skip the second part of this instruction when looking for the next instruction to process. Otherwise, we end up printing "BUG_ld_00" from the kernel disassembler in the CFG. Fixes: efcef17a6d65 ("tools: bpftool: generate .dot graph from CFG information") Signed-off-by: Quentin Monnet <quentin@isovalent.com> Link: https://lore.kernel.org/r/20230405132120.59886-3-quentin@isovalent.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
e27f0f1620
commit
67cf52cdb6
@ -372,8 +372,15 @@ void dump_xlated_for_graph(struct dump_data *dd, void *buf_start, void *buf_end,
|
||||
struct bpf_insn *insn_start = buf_start;
|
||||
struct bpf_insn *insn_end = buf_end;
|
||||
struct bpf_insn *cur = insn_start;
|
||||
bool double_insn = false;
|
||||
|
||||
for (; cur <= insn_end; cur++) {
|
||||
if (double_insn) {
|
||||
double_insn = false;
|
||||
continue;
|
||||
}
|
||||
double_insn = cur->code == (BPF_LD | BPF_IMM | BPF_DW);
|
||||
|
||||
printf("% 4d: ", (int)(cur - insn_start + start_idx));
|
||||
print_bpf_insn(&cbs, cur, true);
|
||||
if (cur != insn_end)
|
||||
|
Loading…
x
Reference in New Issue
Block a user