diff options
Diffstat (limited to 'arch/x86/kvm/x86.c')
| -rw-r--r-- | arch/x86/kvm/x86.c | 10 | 
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 26216bb4403..7198234fa08 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -6906,23 +6906,21 @@ out_free:  int kvm_arch_prepare_memory_region(struct kvm *kvm,  				struct kvm_memory_slot *memslot, -				struct kvm_memory_slot old, -				struct kvm_userspace_memory_region *mem) +				struct kvm_userspace_memory_region *mem, +				enum kvm_mr_change change)  { -	int npages = memslot->npages; -  	/*  	 * Only private memory slots need to be mapped here since  	 * KVM_SET_MEMORY_REGION ioctl is no longer supported.  	 */ -	if ((memslot->id >= KVM_USER_MEM_SLOTS) && npages && !old.npages) { +	if ((memslot->id >= KVM_USER_MEM_SLOTS) && (change == KVM_MR_CREATE)) {  		unsigned long userspace_addr;  		/*  		 * MAP_SHARED to prevent internal slot pages from being moved  		 * by fork()/COW.  		 */ -		userspace_addr = vm_mmap(NULL, 0, npages * PAGE_SIZE, +		userspace_addr = vm_mmap(NULL, 0, memslot->npages * PAGE_SIZE,  					 PROT_READ | PROT_WRITE,  					 MAP_SHARED | MAP_ANONYMOUS, 0);  |