KVM: remove the usage of the mmap_sem for the protection of the memory slots.
This patch replaces the mmap_sem lock for the memory slots with a new kvm private lock, it is needed beacuse untill now there were cases where kvm accesses user memory while holding the mmap semaphore. Signed-off-by: Izik Eidus <izike@qumranet.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
@@ -169,6 +169,7 @@ static struct kvm *kvm_create_vm(void)
|
||||
kvm_io_bus_init(&kvm->pio_bus);
|
||||
mutex_init(&kvm->lock);
|
||||
kvm_io_bus_init(&kvm->mmio_bus);
|
||||
init_rwsem(&kvm->slots_lock);
|
||||
spin_lock(&kvm_lock);
|
||||
list_add(&kvm->vm_list, &vm_list);
|
||||
spin_unlock(&kvm_lock);
|
||||
@@ -339,9 +340,9 @@ int kvm_set_memory_region(struct kvm *kvm,
|
||||
{
|
||||
int r;
|
||||
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
down_write(&kvm->slots_lock);
|
||||
r = __kvm_set_memory_region(kvm, mem, user_alloc);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
up_write(&kvm->slots_lock);
|
||||
return r;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_set_memory_region);
|
||||
|
Reference in New Issue
Block a user