Re: [syzbot ci] Re: KVM: x86/hyperv: Fix racy usage of vcpu->arch.hyperv
Sean Christopherson <[email protected]>
| Newsgroups | dev.linux.lists.syzbot,org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Jun 26, 2026, syzbot ci wrote: > ------------[ cut here ]------------ > debug_locks && !(lock_is_held(&(&vcpu->mutex)->dep_map) || vcpu->vcpu_idx < 0 || !refcount_read(&vcpu->kvm->users_count)) > WARNING: ./include/linux/kvm_host.h:996 at kvm_lockdep_assert_vcpu_is_locked_or_unreachable include/linux/kvm_host.h:994 [inline], CPU#1: syz.1.34/5967 > WARNING: ./include/linux/kvm_host.h:996 at to_hv_vcpu arch/x86/kvm/hyperv.h:79 [inline], CPU#1: syz.1.34/5967 > WARNING: ./include/linux/kvm_host.h:996 at kvm_hv_vcpu_uninit+0x198/0x210 arch/x86/kvm/hyperv.c:906, CPU#1: syz.1.34/5967 > Modules linked in: > CPU: 1 UID: 0 PID: 5967 Comm: syz.1.34 Not tainted syzkaller #0 PREEMPT(full) > Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 > RIP: 0010:kvm_lockdep_assert_vcpu_is_locked_or_unreachable include/linux/kvm_host.h:994 [inline] > RIP: 0010:to_hv_vcpu arch/x86/kvm/hyperv.h:79 [inline] > RIP: 0010:kvm_hv_vcpu_uninit+0x198/0x210 arch/x86/kvm/hyperv.c:906 > Code: 48 89 df e8 0a 55 d8 00 48 c7 03 00 00 00 00 eb 05 e8 5c 16 6d 00 5b 41 5c 41 5e 41 5f 5d e9 ff 16 4d 0a cc e8 49 16 6d 00 90 <0f> 0b 90 e9 65 ff ff ff 48 c7 c1 e0 bb 2f 90 80 e1 07 80 c1 03 38 > RSP: 0018:ffffc9000390f960 EFLAGS: 00010293 > RAX: ffffffff8158e9e7 RBX: ffff8881bc192880 RCX: ffff88816ac70000 > RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000 > RBP: 0000000000000001 R08: ffff888101fa1743 R09: 1ffff110203f42e8 > R10: dffffc0000000000 R11: ffffed10203f42e9 R12: 0000000000000000 > R13: 00000000fffffff8 R14: ffff888101fa1740 R15: dffffc0000000000 > FS: 00007f47c1e886c0(0000) GS:ffff8882a92b6000(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: 0000200000c64000 CR3: 000000016a5e7000 CR4: 0000000000352ef0 > Call Trace: > <TASK> > kvm_arch_vcpu_destroy+0x1a9/0x380 arch/x86/kvm/x86.c:9413 > kvm_vm_ioctl_create_vcpu+0x615/0x990 virt/kvm/kvm_main.c:4269 This is the same thing Sashiko pointed out; I completely botched the cleanup if vCPU creation fails.