On Wed, Apr 20, 2022 at 4:38 AM Tetsuo Handa <penguin-kernel@xxxxxxxxxxxxxxxxxxx> wrote: > > Ping? > > Since how to fix this "current top five crasher" bug depends on how a kernel > socket is created via BPF program, this bug wants help from BPF developers. If the BPF program is loaded/verified successfully, the easiest way to go about this would be to prevent repro from proceeding right after successful validation (e.g, do scanf()) and then use bpftool to find that program's ID and dump disassembly while that program is in the kernel. $ sudo bpftool prog show ... 654439: cgroup_skb tag 6deef7357e7b4530 gpl loaded_at 2022-04-20T06:14:08-0700 uid 0 xlated 64B jited 54B memlock 4096B pids systemd(1) $ sudo bpftool prog dump xlat id 654439 0: (bf) r6 = r1 1: (69) r7 = *(u16 *)(r6 +176) 2: (b4) w8 = 0 3: (44) w8 |= 2 4: (b7) r0 = 1 5: (55) if r8 != 0x2 goto pc+1 6: (b7) r0 = 0 7: (95) exit Hope that helps. I don't know any tool that allows to disassemble raw bytes into BPF assembly. Normally I use llvm-objdump to disassemble well-formed BPF ELF files. Not sure if you can wrange llvm-objdump to disassemble raw bytes without ELF file itself. > > On 2022/04/12 20:04, Tetsuo Handa wrote: > > Hello. > > > > I'm not a BPF user, but I want to know what a BPF program stored in > > "static const char program[2053] =" at > > https://lkml.kernel.org/r/c389e47f-8f82-fd62-8c1d-d9481d2f71ff@xxxxxxxxxxxxxxxxxxx > > is doing so that I can parse syzkaller-generated BPF programs like C programs. > > > > Do you have a utility for this purpose? > > > > Regards.