Re: [syzbot] upstream boot error: WARNING in kvm_wait

Dmitry Vyukov
2021-03-09T07:01:17Z

On Sat, Mar 6, 2021 at 12:37 PM Dmitry Vyukov <dvyukov@google.com> wrote:
>
> On Fri, Mar 5, 2021 at 9:56 PM syzbot
> <syzbot+a4c8bc1d1dc7b620630d@syzkaller.appspotmail.com> wrote:
> >
> > Hello,
> >
> > syzbot found the following issue on:
> >
> > HEAD commit: 280d542f Merge tag 'drm-fixes-2021-03-05' of git://anongit..
> > git tree: upstream
> > console output: https://syzkaller.appspot.com/x/log.txt?x=138c7a92d00000
> > kernel config: https://syzkaller.appspot.com/x/.config?x=dc4003509ab3fc78
> > dashboard link: https://syzkaller.appspot.com/bug?extid=a4c8bc1d1dc7b620630d
> >
> > IMPORTANT: if you fix the issue, please add the following tag to the commit:
> > Reported-by: syzbot+a4c8bc1d1dc7b620630d@syzkaller.appspotmail.com
>
> +Mark, I've enabled CONFIG_DEBUG_IRQFLAGS on syzbot and it led to this breakage.
> Is it a bug in kvm_wait or in the debugging code itself? If it's a
> real bug, I would assume it's pretty bad as it happens all the time.

Wanpeng posted a fix for this:

https://lore.kernel.org/kvm/1614057902-23774-1-git-send-email-wanpengli@tencent.com/

#syz fix: x86/kvm: Fix broken irq restoration in kvm_wait

> > ------------[ cut here ]------------
> > raw_local_irq_restore() called with IRQs enabled
> > WARNING: CPU: 2 PID: 213 at kernel/locking/irqflag-debug.c:10 warn_bogus_irq_restore+0x1d/0x20 kernel/locking/irqflag-debug.c:10
> > Modules linked in:
> > CPU: 2 PID: 213 Comm: kworker/u17:4 Not tainted 5.12.0-rc1-syzkaller #0
> > Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
> > Workqueue: events_unbound call_usermodehelper_exec_work
> >
> > RIP: 0010:warn_bogus_irq_restore+0x1d/0x20 kernel/locking/irqflag-debug.c:10
> > Code: be ff cc cc cc cc cc cc cc cc cc cc cc 80 3d e4 38 af 04 00 74 01 c3 48 c7 c7 a0 8f 6b 89 c6 05 d3 38 af 04 01 e8 e7 b9 be ff <0f> 0b c3 48 39 77 10 0f 84 97 00 00 00 66 f7 47 22 f0 ff 74 4b 48
> > RSP: 0000:ffffc90000fe7770 EFLAGS: 00010286
> >
> > RAX: 0000000000000000 RBX: ffffffff8c0e9c68 RCX: 0000000000000000
> > RDX: ffff8880116bc3c0 RSI: ffffffff815c0cf5 RDI: fffff520001fcee0
> > RBP: 0000000000000200 R08: 0000000000000000 R09: 0000000000000001
> > R10: ffffffff815b9a5e R11: 0000000000000000 R12: 0000000000000003
> > R13: fffffbfff181d38d R14: 0000000000000001 R15: ffff88802cc36000
> > FS: 0000000000000000(0000) GS:ffff88802cc00000(0000) knlGS:0000000000000000
> > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> > CR2: 0000000000000000 CR3: 000000000bc8e000 CR4: 0000000000150ee0
> > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> > Call Trace:
> > kvm_wait arch/x86/kernel/kvm.c:860 [inline]
> > kvm_wait+0xc9/0xe0 arch/x86/kernel/kvm.c:837
> > pv_wait arch/x86/include/asm/paravirt.h:564 [inline]
> > pv_wait_head_or_lock kernel/locking/qspinlock_paravirt.h:470 [inline]
> > __pv_queued_spin_lock_slowpath+0x8b8/0xb40 kernel/locking/qspinlock.c:508
> > pv_queued_spin_lock_slowpath arch/x86/include/asm/paravirt.h:554 [inline]
> > queued_spin_lock_slowpath arch/x86/include/asm/qspinlock.h:51 [inline]
> > queued_spin_lock include/asm-generic/qspinlock.h:85 [inline]
> > do_raw_spin_lock+0x200/0x2b0 kernel/locking/spinlock_debug.c:113
> > spin_lock include/linux/spinlock.h:354 [inline]
> > copy_fs_struct+0x1c8/0x340 fs/fs_struct.c:123
> > copy_fs kernel/fork.c:1443 [inline]
> > copy_process+0x4dc2/0x6fd0 kernel/fork.c:2088
> > kernel_clone+0xe7/0xab0 kernel/fork.c:2462
> > kernel_thread+0xb5/0xf0 kernel/fork.c:2514
> > call_usermodehelper_exec_work kernel/umh.c:172 [inline]
> > call_usermodehelper_exec_work+0xcc/0x180 kernel/umh.c:158
> > process_one_work+0x98d/0x1600 kernel/workqueue.c:2275
> > worker_thread+0x64c/0x1120 kernel/workqueue.c:2421
> > kthread+0x3b1/0x4a0 kernel/kthread.c:292
> > ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:294
> >
> >
> > ---
> > 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@googlegroups.com.
> >
> > syzbot will keep track of this issue. See:
> > https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
> >
> > --
> > You received this message because you are subscribed to the Google Groups "syzkaller-bugs" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to syzkaller-bugs+unsubscribe@googlegroups.com.
> > To view this discussion on the web visit https://groups.google.com/d/msgid/syzkaller-bugs/000000000000ccbedd05bcd0504e%40google.com.