From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750766AbcKOGbb (ORCPT ); Tue, 15 Nov 2016 01:31:31 -0500 Received: from mail-qk0-f172.google.com ([209.85.220.172]:34515 "EHLO mail-qk0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750961AbcKOGb3 (ORCPT ); Tue, 15 Nov 2016 01:31:29 -0500 MIME-Version: 1.0 In-Reply-To: References: From: Dmitry Vyukov Date: Tue, 15 Nov 2016 07:31:07 +0100 Message-ID: Subject: Re: kvm: deadlock between kvm_vm_ioctl_get_dirty_log/kvm_hv_set_msr_common/kvm_create_pit To: Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , "x86@kernel.org" , KVM list , LKML , Steve Rutherford Cc: syzkaller Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Nov 15, 2016 at 7:27 AM, Dmitry Vyukov wrote: > Hello, > > The following program produces a deadlocked, unkillable process: > https://gist.githubusercontent.com/dvyukov/fb7e93f6618f4eccb84d419ea6cec491/raw/a14b60250e593eb1b61f50cead41059dc49ceff2/gistfile1.txt > > > # cat /proc/9362/task/*/stack > [] __synchronize_srcu+0x2f8/0x4a0 kernel/rcu/srcu.c:448 > [] synchronize_srcu_expedited+0x13/0x20 kernel/rcu/srcu.c:510 > [] kvm_io_bus_register_dev+0x2ab/0x3e0 > arch/x86/kvm/../../../virt/kvm/kvm_main.c:3559 > [] kvm_create_pit+0x5c6/0x8c0 arch/x86/kvm/i8254.c:694 > [] kvm_arch_vm_ioctl+0x1406/0x23c0 arch/x86/kvm/x86.c:3956 > [] kvm_vm_ioctl+0x1fa/0x1a70 > arch/x86/kvm/../../../virt/kvm/kvm_main.c:3099 > [< inline >] vfs_ioctl fs/ioctl.c:43 > [] do_vfs_ioctl+0x1c4/0x1630 fs/ioctl.c:679 > [< inline >] SYSC_ioctl fs/ioctl.c:694 > [] SyS_ioctl+0x94/0xc0 fs/ioctl.c:685 > [] entry_SYSCALL_64_fastpath+0x23/0xc6 > arch/x86/entry/entry_64.S:209 > [] 0xffffffffffffffff > > [] kvm_hv_set_msr_common+0x163/0x2a30 > arch/x86/kvm/hyperv.c:1145 > [] kvm_set_msr_common+0xb0b/0x23a0 arch/x86/kvm/x86.c:2261 > [] vmx_set_msr+0x27d/0xcb0 arch/x86/kvm/vmx.c:3149 > [] kvm_set_msr+0xd9/0x170 arch/x86/kvm/x86.c:1084 > [] do_set_msr+0x123/0x1a0 arch/x86/kvm/x86.c:1113 > [< inline >] __msr_io arch/x86/kvm/x86.c:2523 > [] msr_io+0x250/0x460 arch/x86/kvm/x86.c:2560 > [] kvm_arch_vcpu_ioctl+0x360/0x44a0 arch/x86/kvm/x86.c:3401 > [] kvm_vcpu_ioctl+0x237/0x11c0 > arch/x86/kvm/../../../virt/kvm/kvm_main.c:2710 > [< inline >] vfs_ioctl fs/ioctl.c:43 > [] do_vfs_ioctl+0x1c4/0x1630 fs/ioctl.c:679 > [< inline >] SYSC_ioctl fs/ioctl.c:694 > [] SyS_ioctl+0x94/0xc0 fs/ioctl.c:685 > [] entry_SYSCALL_64_fastpath+0x23/0xc6 > arch/x86/entry/entry_64.S:209 > > [] 0xffffffffffffffff > [] kvm_vm_ioctl_get_dirty_log+0x8f/0x210 > arch/x86/kvm/x86.c:3779 > [] kvm_vm_ioctl+0x11e4/0x1a70 > arch/x86/kvm/../../../virt/kvm/kvm_main.c:2969 > [< inline >] vfs_ioctl fs/ioctl.c:43 > [] do_vfs_ioctl+0x1c4/0x1630 fs/ioctl.c:679 > [< inline >] SYSC_ioctl fs/ioctl.c:694 > [] SyS_ioctl+0x94/0xc0 fs/ioctl.c:685 > [] entry_SYSCALL_64_fastpath+0x23/0xc6 > arch/x86/entry/entry_64.S:209 > [] 0xffffffffffffffff > > > INFO: task syz-executor:5833 blocked for more than 120 seconds. > Not tainted 4.9.0-rc5+ #28 > "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > syz-executor D17872 5833 4082 0x00000004 > ffff880033944780 ffff8800602f5100 ffff8800652b0c80 ffff8800391a2380 > ffff88006d122cd8 ffff8800368763a8 ffffffff8812c15c 0000000041b58ab3 > ffff88006d123668 ffff88006d123640 1ffff10006d0ec5c ffff88006d122cd8 > Call Trace: > [] schedule+0x10d/0x460 kernel/sched/core.c:3457 > [] schedule_preempt_disabled+0x15/0x20 > kernel/sched/core.c:3490 > [< inline >] __mutex_lock_common kernel/locking/mutex.c:582 > [] mutex_lock_nested+0x686/0xf20 kernel/locking/mutex.c:621 > [] kvm_hv_set_msr_common+0x163/0x2a30 > arch/x86/kvm/hyperv.c:1145 > [] kvm_set_msr_common+0xb0b/0x23a0 arch/x86/kvm/x86.c:2261 > [] vmx_set_msr+0x27d/0xcb0 arch/x86/kvm/vmx.c:3149 > [] kvm_set_msr+0xd9/0x170 arch/x86/kvm/x86.c:1084 > [] do_set_msr+0x123/0x1a0 arch/x86/kvm/x86.c:1113 > [< inline >] __msr_io arch/x86/kvm/x86.c:2523 > [] msr_io+0x250/0x460 arch/x86/kvm/x86.c:2560 > [] kvm_arch_vcpu_ioctl+0x360/0x44a0 arch/x86/kvm/x86.c:3401 > [] kvm_vcpu_ioctl+0x237/0x11c0 > arch/x86/kvm/../../../virt/kvm/kvm_main.c:2708 > [< inline >] vfs_ioctl fs/ioctl.c:43 > [] do_vfs_ioctl+0x1c4/0x1630 fs/ioctl.c:679 > [< inline >] SYSC_ioctl fs/ioctl.c:694 > [] SyS_ioctl+0x94/0xc0 fs/ioctl.c:685 > [] entry_SYSCALL_64_fastpath+0x23/0xc6 > > [ 3319.345108] Showing all locks held in the system: > [ 3319.349897] 2 locks held by khungtaskd/1328: > [ 3319.352888] #0: [ 3319.354562] ( > rcu_read_lock[ 3319.358168] ){......} > , at: [ 3319.360511] [] watchdog+0x1cc/0xd70 > [ 3319.363841] #1: [ 3319.364761] ( > tasklist_lock[ 3319.367215] ){.+.+..} > , at: [ 3319.369197] [] debug_show_all_locks+0xd2/0x420 > [ 3319.374809] 3 locks held by syz-executor/5833: > [ 3319.388745] #0: [ 3319.390145] ( > &vcpu->mutex[ 3319.391749] ){+.+.+.} > , at: [ 3319.392313] [] vcpu_load+0x21/0x70 > [ 3319.396281] #1: [ 3319.398802] ( > &kvm->srcu[ 3319.399431] ){......} > , at: [ 3319.399883] [] msr_io+0x148/0x460 > [ 3319.403905] #2: [ 3319.404639] ( > &kvm->lock[ 3319.406582] ){+.+.+.} > , at: [ 3319.409670] [] kvm_hv_set_msr_common+0x163/0x2a30 > [ 3319.422421] 2 locks held by syz-executor/5849: > [ 3319.425646] #0: [ 3319.426948] ( > &kvm->lock[ 3319.427747] ){+.+.+.} > , at: [ 3319.428368] [] kvm_arch_vm_ioctl+0xb4e/0x23c0 > [ 3319.429594] #1: [ 3319.429942] ( > &kvm->slots_lock[ 3319.430881] ){+.+.+.} > , at: [ 3319.431631] [] kvm_create_pit+0x589/0x8c0 > > > On commit a25f0944ba9b1d8a6813fd6f1a86f1bd59ac25a6 (Nov 13) kvm_vm_ioctl_get_dirty_log is probably unrelated because I also see following deadlocks: # cat /proc/7169/task/*/stack [] __synchronize_srcu+0x2f8/0x4a0 [] synchronize_srcu_expedited+0x13/0x20 [] kvm_io_bus_register_dev+0x2ab/0x3e0 [] kvm_create_pit+0x5c6/0x8c0 [] kvm_arch_vm_ioctl+0x1406/0x23c0 [] kvm_vm_ioctl+0x1fa/0x1a70 [] do_vfs_ioctl+0x1c4/0x1630 [] SyS_ioctl+0x94/0xc0 [] entry_SYSCALL_64_fastpath+0x23/0xc6 [] 0xffffffffffffffff [] kvm_hv_set_msr_common+0x163/0x2a30 [] kvm_set_msr_common+0xb0b/0x23a0 [] vmx_set_msr+0x27d/0xcb0 [] kvm_set_msr+0xd9/0x170 [] do_set_msr+0x123/0x1a0 [] msr_io+0x250/0x460 [] kvm_arch_vcpu_ioctl+0x360/0x44a0 [] kvm_vcpu_ioctl+0x237/0x11c0 [] do_vfs_ioctl+0x1c4/0x1630 [] SyS_ioctl+0x94/0xc0 [] entry_SYSCALL_64_fastpath+0x23/0xc6 [] 0xffffffffffffffff