KVM: Remove user_alloc from struct kvm_memory_slot
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / x86 / kvm / x86.c
index 373e17a0d398f9498cfe9feebbc22b0551a0b9d6..3c5bb6fe52804c59c31c7304757fa2aa92dc0d1b 100644 (file)
@@ -6897,33 +6897,28 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
                                bool user_alloc)
 {
        int npages = memslot->npages;
-       int map_flags = MAP_PRIVATE | MAP_ANONYMOUS;
 
-       /* Prevent internal slot pages from being moved by fork()/COW. */
-       if (memslot->id >= KVM_USER_MEM_SLOTS)
-               map_flags = MAP_SHARED | MAP_ANONYMOUS;
-
-       /*To keep backward compatibility with older userspace,
-        *x86 needs to handle !user_alloc case.
+       /*
+        * Only private memory slots need to be mapped here since
+        * KVM_SET_MEMORY_REGION ioctl is no longer supported.
         */
-       if (!user_alloc) {
-               if (npages && !old.npages) {
-                       unsigned long userspace_addr;
+       if ((memslot->id >= KVM_USER_MEM_SLOTS) && npages && !old.npages) {
+               unsigned long userspace_addr;
 
-                       userspace_addr = vm_mmap(NULL, 0,
-                                                npages * PAGE_SIZE,
-                                                PROT_READ | PROT_WRITE,
-                                                map_flags,
-                                                0);
+               /*
+                * MAP_SHARED to prevent internal slot pages from being moved
+                * by fork()/COW.
+                */
+               userspace_addr = vm_mmap(NULL, 0, npages * PAGE_SIZE,
+                                        PROT_READ | PROT_WRITE,
+                                        MAP_SHARED | MAP_ANONYMOUS, 0);
 
-                       if (IS_ERR((void *)userspace_addr))
-                               return PTR_ERR((void *)userspace_addr);
+               if (IS_ERR((void *)userspace_addr))
+                       return PTR_ERR((void *)userspace_addr);
 
-                       memslot->userspace_addr = userspace_addr;
-               }
+               memslot->userspace_addr = userspace_addr;
        }
 
-
        return 0;
 }
 
@@ -6935,7 +6930,7 @@ void kvm_arch_commit_memory_region(struct kvm *kvm,
 
        int nr_mmu_pages = 0, npages = mem->memory_size >> PAGE_SHIFT;
 
-       if (!user_alloc && !old.user_alloc && old.npages && !npages) {
+       if ((mem->slot >= KVM_USER_MEM_SLOTS) && old.npages && !npages) {
                int ret;
 
                ret = vm_munmap(old.userspace_addr,