Re: [PATCH] bpf: Ensure BPF programs testing skb context initialization

From: Martin KaFai Lau
Date: Mon Jul 15 2024 - 18:00:24 EST


On 7/15/24 11:13 AM, Michal Switala wrote:

>> Reported-by: syzbot+cca39e6e84a367a7e6f6@xxxxxxxxxxxxxxxxxxxxxxxxx
>> Closes: https://syzkaller.appspot.com/bug?extid=cca39e6e84a367a7e6f6
>> Link: https://lore.kernel.org/all/000000000000b95d41061cbf302a@xxxxxxxxxx/
>
> Something doesn't add up.
> This syzbot report is about:
>
> dev_map_enqueue+0x31/0x3e0 kernel/bpf/devmap.c:539
> __xdp_do_redirect_frame net/core/filter.c:4397 [inline]
> bpf_prog_test_run_xdp
>
> why you're fixing bpf_prog_test_run_skb ?


[ Please keep the relevant email context in the reply ]


The reproducer calls the methods bpf_prog_test_run_xdp and
bpf_prog_test_run_skb. Both lead to the invocation of dev_map_enqueue, in the

The syzbot report is triggering from the bpf_prog_test_run_xdp. I agree with Alexei that fixing the bpf_prog_test_run_skb does not make sense. At least I don't see how dev_map_enqueue can be used from bpf_prog_test_run_skb.

It looks very similar to https://lore.kernel.org/bpf/000000000000f6531b061494e696@xxxxxxxxxx/. It has been fixed in commit 5bcf0dcbf906 ("xdp: use flags field to disambiguate broadcast redirect")

I tried the C repro. I can reproduce in the bpf tree also which should have the fix. I cannot reproduce in the bpf-next though.

Cc Toke who knows more details here.

case of the former, the backtrace is recorded in its entirety, whereas for the
latter it is not. I think the bug might be incorrectly reported on syzkaller, as
during GDB debugging, the problem occurred in functions called from
bpf_prog_test_run_skb. I also ran testing of my patch on syzkaller and the tests
passed.