diff options
author | Sheng Yang <sheng@linux.intel.com> | 2009-12-15 03:28:07 +0100 |
---|---|---|
committer | Marcelo Tosatti <mtosatti@redhat.com> | 2009-12-27 16:36:31 +0100 |
commit | fae3a3536a6fecedebd49fa847f810e599bfb132 (patch) | |
tree | 18b555c3f6bcc6735fd7a90db2c398a35e29c84e /virt/kvm/kvm_main.c | |
parent | KVM: MMU: remove prefault from invlpg handler (diff) | |
download | linux-fae3a3536a6fecedebd49fa847f810e599bfb132.tar.xz linux-fae3a3536a6fecedebd49fa847f810e599bfb132.zip |
KVM: Fix possible circular locking in kvm_vm_ioctl_assign_device()
One possible order is:
KVM_CREATE_IRQCHIP ioctl(took kvm->lock) -> kvm_iobus_register_dev() ->
down_write(kvm->slots_lock).
The other one is in kvm_vm_ioctl_assign_device(), which take kvm->slots_lock
first, then kvm->lock.
Update the comment of lock order as well.
Observe it due to kernel locking debug warnings.
Cc: stable@kernel.org
Signed-off-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'virt/kvm/kvm_main.c')
-rw-r--r-- | virt/kvm/kvm_main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index b5af88167613..7db071ba466c 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -64,7 +64,7 @@ MODULE_LICENSE("GPL"); /* * Ordering of locks: * - * kvm->slots_lock --> kvm->lock --> kvm->irq_lock + * kvm->lock --> kvm->slots_lock --> kvm->irq_lock */ DEFINE_SPINLOCK(kvm_lock); |