Re: BUG: soft lockup in kvm_vm_ioctl

From: Dmitry Vyukov
Date: Wed May 08 2019 - 07:24:59 EST


From: Steven Rostedt <rostedt@xxxxxxxxxxx>
Date: Thu, May 2, 2019 at 5:10 AM
To: Eric Biggers
Cc: syzbot, Dmitry Vyukov, <kvm@xxxxxxxxxxxxxxx>,
<adrian.hunter@xxxxxxxxx>, <davem@xxxxxxxxxxxxx>,
<dedekind1@xxxxxxxxx>, <jbaron@xxxxxxxxxx>, <jpoimboe@xxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>, <linux-mtd@xxxxxxxxxxxxxxxxxxx>,
<luto@xxxxxxxxxx>, <mingo@xxxxxxxxxx>, <peterz@xxxxxxxxxxxxx>,
<richard@xxxxxx>, <riel@xxxxxxxxxxx>,
<syzkaller-bugs@xxxxxxxxxxxxxxxx>, <tglx@xxxxxxxxxxxxx>

> On Wed, 1 May 2019 19:34:27 -0700
> Eric Biggers <ebiggers@xxxxxxxxxx> wrote:
>
> > > Call Trace:
> > > smp_call_function_many+0x750/0x8c0 kernel/smp.c:434
> > > smp_call_function+0x42/0x90 kernel/smp.c:492
> > > on_each_cpu+0x31/0x200 kernel/smp.c:602
> > > text_poke_bp+0x107/0x19b arch/x86/kernel/alternative.c:821
> > > __jump_label_transform+0x263/0x330 arch/x86/kernel/jump_label.c:91
> > > arch_jump_label_transform+0x2b/0x40 arch/x86/kernel/jump_label.c:99
> > > __jump_label_update+0x16a/0x210 kernel/jump_label.c:389
> > > jump_label_update kernel/jump_label.c:752 [inline]
> > > jump_label_update+0x1ce/0x3d0 kernel/jump_label.c:731
> > > static_key_slow_inc_cpuslocked+0x1c1/0x250 kernel/jump_label.c:129
> > > static_key_slow_inc+0x1b/0x30 kernel/jump_label.c:144
> > > kvm_arch_vcpu_init+0x6b7/0x870 arch/x86/kvm/x86.c:9068
> > > kvm_vcpu_init+0x272/0x370 arch/x86/kvm/../../../virt/kvm/kvm_main.c:320
> > > vmx_create_vcpu+0x191/0x2540 arch/x86/kvm/vmx/vmx.c:6577
> > > kvm_arch_vcpu_create+0x80/0x120 arch/x86/kvm/x86.c:8755
> > > kvm_vm_ioctl_create_vcpu arch/x86/kvm/../../../virt/kvm/kvm_main.c:2569
> > > [inline]
> > > kvm_vm_ioctl+0x5ce/0x19c0 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3105
> > > vfs_ioctl fs/ioctl.c:46 [inline]
> > > file_ioctl fs/ioctl.c:509 [inline]
> > > do_vfs_ioctl+0xd6e/0x1390 fs/ioctl.c:696
> > > ksys_ioctl+0xab/0xd0 fs/ioctl.c:713
> > > __do_sys_ioctl fs/ioctl.c:720 [inline]
> > > __se_sys_ioctl fs/ioctl.c:718 [inline]
> > > __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:718
> > > do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
> > > entry_SYSCALL_64_after_hwframe+0x49/0xbe
>
> >
> > I'm also curious how syzbot found the list of people to send this to, as it
> > seems very random. This should obviously have gone to the kvm mailing list, but
> > it wasn't sent there; I had to manually add it.
>
> My guess is that it went down the call stack, and picked those that
> deal with the functions that are listed at the deepest part of the
> stack. kvm doesn't appear for 12 functions up from the crash. It
> probably stopped its search before that.

Hi,

What we do now is the following. We take all filenames in the report
starting from top to bottom, and then apply a blacklist to filter out
utility functions and bug detection facilities:
https://github.com/google/syzkaller/blob/master/pkg/report/linux.go#L59-L89
The first file name that is not blacklisted is used with get_maintainers.pl.