Re: [syzbot] KMSAN: uninit-value in erspan_build_header

From: sdf
Date: Mon Oct 17 2022 - 17:08:54 EST


On 10/17, Jakub Kicinski wrote:
CC: bpf, looks like we have a packet with uninitialized payload
generated by BPF_PROG_TEST_RUN?

Sounds similar to [0] and [1].

0: https://lore.kernel.org/bpf/ce5d58a3-32ed-fa81-d490-ce854cfca927@xxxxxxxxxx/T/#t
1: https://lore.kernel.org/bpf/CAKH8qBugSdWHP7mtNxrnLLR+56u_0OCx3xQOkJSV-+RUvDAeNg@xxxxxxxxxxxxxx/T/#t

On Wed, 12 Oct 2022 09:59:52 -0700 syzbot wrote:
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: 968c2729e576 x86: kmsan: fix comment in kmsan_shadow.c
> git tree: https://github.com/google/kmsan.git master
> console output: https://syzkaller.appspot.com/x/log.txt?x=100cd00c880000
> kernel config: https://syzkaller.appspot.com/x/.config?x=131312b26465c190
> dashboard link: https://syzkaller.appspot.com/bug?extid=d551178aab6a783dc249
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project.git 610139d2d9ce6746b3c617fb3e2f7886272d26ff), GNU ld (GNU Binutils for Debian) 2.35.2
> userspace arch: i386
>
> Unfortunately, I don't have any reproducer for this issue yet.
>
> Downloadable assets:
> disk image: https://storage.googleapis.com/syzbot-assets/c78ce21b953f/disk-968c2729.raw.xz
> vmlinux: https://storage.googleapis.com/syzbot-assets/22868d826804/vmlinux-968c2729.xz
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+d551178aab6a783dc249@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> =====================================================
> BUG: KMSAN: uninit-value in erspan_build_header+0x16d/0x330 include/net/erspan.h:197
> erspan_build_header+0x16d/0x330 include/net/erspan.h:197
> erspan_xmit+0x11a2/0x1f00 net/ipv4/ip_gre.c:701
> __netdev_start_xmit include/linux/netdevice.h:4819 [inline]
> netdev_start_xmit include/linux/netdevice.h:4833 [inline]
> xmit_one+0x14e/0x5f0 net/core/dev.c:3590
> dev_hard_start_xmit+0xe5/0x370 net/core/dev.c:3606
> sch_direct_xmit+0x3f1/0xdb0 net/sched/sch_generic.c:342
> __dev_xmit_skb+0xc22/0x1a30 net/core/dev.c:3817
> __dev_queue_xmit+0x12cb/0x31f0 net/core/dev.c:4222
> dev_queue_xmit include/linux/netdevice.h:3008 [inline]
> __bpf_tx_skb net/core/filter.c:2115 [inline]
> __bpf_redirect_common net/core/filter.c:2154 [inline]
> __bpf_redirect+0x1293/0x13b0 net/core/filter.c:2161
> ____bpf_clone_redirect net/core/filter.c:2430 [inline]
> bpf_clone_redirect+0x324/0x470 net/core/filter.c:2402
> ___bpf_prog_run+0x7ed/0xaee0 kernel/bpf/core.c:1813
> __bpf_prog_run512+0xc2/0x110 kernel/bpf/core.c:2038
> bpf_dispatcher_nop_func include/linux/bpf.h:903 [inline]
> __bpf_prog_run include/linux/filter.h:594 [inline]
> bpf_prog_run include/linux/filter.h:601 [inline]
> bpf_test_run+0x592/0xd20 net/bpf/test_run.c:402
> bpf_prog_test_run_skb+0x1625/0x20b0 net/bpf/test_run.c:1141
> bpf_prog_test_run+0x6a0/0x730 kernel/bpf/syscall.c:3620
> __sys_bpf+0x88d/0xe70 kernel/bpf/syscall.c:4971
> __do_sys_bpf kernel/bpf/syscall.c:5057 [inline]
> __se_sys_bpf kernel/bpf/syscall.c:5055 [inline]
> __ia32_sys_bpf+0x9c/0xe0 kernel/bpf/syscall.c:5055
> do_syscall_32_irqs_on arch/x86/entry/common.c:112 [inline]
> __do_fast_syscall_32+0xa2/0x100 arch/x86/entry/common.c:178
> do_fast_syscall_32+0x33/0x70 arch/x86/entry/common.c:203
> do_SYSENTER_32+0x1b/0x20 arch/x86/entry/common.c:246
> entry_SYSENTER_compat_after_hwframe+0x70/0x82
>
> Uninit was created at:
> slab_post_alloc_hook mm/slab.h:732 [inline]
> slab_alloc_node mm/slub.c:3258 [inline]
> __kmalloc_node_track_caller+0x814/0x1250 mm/slub.c:4970
> kmalloc_reserve net/core/skbuff.c:362 [inline]
> pskb_expand_head+0x24a/0x1a80 net/core/skbuff.c:1729
> __skb_cow include/linux/skbuff.h:3529 [inline]
> skb_cow_head include/linux/skbuff.h:3563 [inline]
> erspan_xmit+0xad2/0x1f00 net/ipv4/ip_gre.c:688
> __netdev_start_xmit include/linux/netdevice.h:4819 [inline]
> netdev_start_xmit include/linux/netdevice.h:4833 [inline]
> xmit_one+0x14e/0x5f0 net/core/dev.c:3590
> dev_hard_start_xmit+0xe5/0x370 net/core/dev.c:3606
> sch_direct_xmit+0x3f1/0xdb0 net/sched/sch_generic.c:342
> __dev_xmit_skb+0xc22/0x1a30 net/core/dev.c:3817
> __dev_queue_xmit+0x12cb/0x31f0 net/core/dev.c:4222
> dev_queue_xmit include/linux/netdevice.h:3008 [inline]
> __bpf_tx_skb net/core/filter.c:2115 [inline]
> __bpf_redirect_common net/core/filter.c:2154 [inline]
> __bpf_redirect+0x1293/0x13b0 net/core/filter.c:2161
> ____bpf_clone_redirect net/core/filter.c:2430 [inline]
> bpf_clone_redirect+0x324/0x470 net/core/filter.c:2402
> ___bpf_prog_run+0x7ed/0xaee0 kernel/bpf/core.c:1813
> __bpf_prog_run512+0xc2/0x110 kernel/bpf/core.c:2038
> bpf_dispatcher_nop_func include/linux/bpf.h:903 [inline]
> __bpf_prog_run include/linux/filter.h:594 [inline]
> bpf_prog_run include/linux/filter.h:601 [inline]
> bpf_test_run+0x592/0xd20 net/bpf/test_run.c:402
> bpf_prog_test_run_skb+0x1625/0x20b0 net/bpf/test_run.c:1141
> bpf_prog_test_run+0x6a0/0x730 kernel/bpf/syscall.c:3620
> __sys_bpf+0x88d/0xe70 kernel/bpf/syscall.c:4971
> __do_sys_bpf kernel/bpf/syscall.c:5057 [inline]
> __se_sys_bpf kernel/bpf/syscall.c:5055 [inline]
> __ia32_sys_bpf+0x9c/0xe0 kernel/bpf/syscall.c:5055
> do_syscall_32_irqs_on arch/x86/entry/common.c:112 [inline]
> __do_fast_syscall_32+0xa2/0x100 arch/x86/entry/common.c:178
> do_fast_syscall_32+0x33/0x70 arch/x86/entry/common.c:203
> do_SYSENTER_32+0x1b/0x20 arch/x86/entry/common.c:246
> entry_SYSENTER_compat_after_hwframe+0x70/0x82
>
> CPU: 0 PID: 12499 Comm: syz-executor.1 Not tainted 6.0.0-rc5-syzkaller-48543-g968c2729e576 #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/22/2022
> =====================================================
>
>
> ---
> This report is generated by a bot. It may contain errors.
> See https://goo.gl/tpsmEJ for more information about syzbot.
> syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.
>
> syzbot will keep track of this issue. See:
> https://goo.gl/tpsmEJ#status for how to communicate with syzbot.