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 22cdb960660a..96ebc0679415 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; |
