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

From: Jakub Kicinski <[email-masked]>
Date: Mon, 17 Oct 2022 12:13:44 -0700

CC: bpf, looks like we have a packet with uninitialized payload
generated by BPF_PROG_TEST_RUN?

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: [email-masked]
> 
> =====================================================
> 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 [email-masked].
> 
> syzbot will keep track of this issue. See:
> https://goo.gl/tpsmEJ#status for how to communicate with syzbot.