diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-07 22:06:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-07 22:06:28 -0400 |
commit | 58a9a36b5444cbd921cdfc8ddd344d9983cc2c7b (patch) | |
tree | d844cc89a89f0802104326eeafbfcb37eb9263a4 /virt | |
parent | 22b174f8b7daf59f01b7b76e95c14edf41bf45fa (diff) | |
parent | 74b5c5bfff429f464c38dd49af41d75cf0e7dc26 (diff) |
Merge branch 'kvm-updates/3.0' of git://git.kernel.org/pub/scm/virt/kvm/kvm
* 'kvm-updates/3.0' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: Initialize kvm before registering the mmu notifier
KVM: x86: use proper port value when checking io instruction permission
KVM: add missing void __user * cast to access_ok() call
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/kvm_main.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 22cdb960660..96ebc067941 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -467,12 +467,8 @@ static struct kvm *kvm_create_vm(void) | |||
467 | if (!kvm->buses[i]) | 467 | if (!kvm->buses[i]) |
468 | goto out_err; | 468 | goto out_err; |
469 | } | 469 | } |
470 | spin_lock_init(&kvm->mmu_lock); | ||
471 | |||
472 | r = kvm_init_mmu_notifier(kvm); | ||
473 | if (r) | ||
474 | goto out_err; | ||
475 | 470 | ||
471 | spin_lock_init(&kvm->mmu_lock); | ||
476 | kvm->mm = current->mm; | 472 | kvm->mm = current->mm; |
477 | atomic_inc(&kvm->mm->mm_count); | 473 | atomic_inc(&kvm->mm->mm_count); |
478 | kvm_eventfd_init(kvm); | 474 | kvm_eventfd_init(kvm); |
@@ -480,6 +476,11 @@ static struct kvm *kvm_create_vm(void) | |||
480 | mutex_init(&kvm->irq_lock); | 476 | mutex_init(&kvm->irq_lock); |
481 | mutex_init(&kvm->slots_lock); | 477 | mutex_init(&kvm->slots_lock); |
482 | atomic_set(&kvm->users_count, 1); | 478 | atomic_set(&kvm->users_count, 1); |
479 | |||
480 | r = kvm_init_mmu_notifier(kvm); | ||
481 | if (r) | ||
482 | goto out_err; | ||
483 | |||
483 | raw_spin_lock(&kvm_lock); | 484 | raw_spin_lock(&kvm_lock); |
484 | list_add(&kvm->vm_list, &vm_list); | 485 | list_add(&kvm->vm_list, &vm_list); |
485 | raw_spin_unlock(&kvm_lock); | 486 | raw_spin_unlock(&kvm_lock); |
@@ -651,7 +652,9 @@ int __kvm_set_memory_region(struct kvm *kvm, | |||
651 | /* We can read the guest memory with __xxx_user() later on. */ | 652 | /* We can read the guest memory with __xxx_user() later on. */ |
652 | if (user_alloc && | 653 | if (user_alloc && |
653 | ((mem->userspace_addr & (PAGE_SIZE - 1)) || | 654 | ((mem->userspace_addr & (PAGE_SIZE - 1)) || |
654 | !access_ok(VERIFY_WRITE, mem->userspace_addr, mem->memory_size))) | 655 | !access_ok(VERIFY_WRITE, |
656 | (void __user *)(unsigned long)mem->userspace_addr, | ||
657 | mem->memory_size))) | ||
655 | goto out; | 658 | goto out; |
656 | if (mem->slot >= KVM_MEMORY_SLOTS + KVM_PRIVATE_MEM_SLOTS) | 659 | if (mem->slot >= KVM_MEMORY_SLOTS + KVM_PRIVATE_MEM_SLOTS) |
657 | goto out; | 660 | goto out; |