KVM: X86: Don't take srcu lock in init_rmode_identity_map()
authorPeter Xu <peterx@redhat.com>
Thu, 9 Jan 2020 14:57:14 +0000 (09:57 -0500)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 27 Jan 2020 18:59:53 +0000 (19:59 +0100)
We've already got the slots_lock, so we should be safe.

Signed-off-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/vmx/vmx.c

index 62fb639..1d486e8 100644 (file)
@@ -3483,7 +3483,7 @@ out:
 static int init_rmode_identity_map(struct kvm *kvm)
 {
        struct kvm_vmx *kvm_vmx = to_kvm_vmx(kvm);
-       int i, idx, r = 0;
+       int i, r = 0;
        kvm_pfn_t identity_map_pfn;
        u32 tmp;
 
@@ -3491,7 +3491,7 @@ static int init_rmode_identity_map(struct kvm *kvm)
        mutex_lock(&kvm->slots_lock);
 
        if (likely(kvm_vmx->ept_identity_pagetable_done))
-               goto out2;
+               goto out;
 
        if (!kvm_vmx->ept_identity_map_addr)
                kvm_vmx->ept_identity_map_addr = VMX_EPT_IDENTITY_PAGETABLE_ADDR;
@@ -3500,9 +3500,8 @@ static int init_rmode_identity_map(struct kvm *kvm)
        r = __x86_set_memory_region(kvm, IDENTITY_PAGETABLE_PRIVATE_MEMSLOT,
                                    kvm_vmx->ept_identity_map_addr, PAGE_SIZE);
        if (r < 0)
-               goto out2;
+               goto out;
 
-       idx = srcu_read_lock(&kvm->srcu);
        r = kvm_clear_guest_page(kvm, identity_map_pfn, 0, PAGE_SIZE);
        if (r < 0)
                goto out;
@@ -3518,9 +3517,6 @@ static int init_rmode_identity_map(struct kvm *kvm)
        kvm_vmx->ept_identity_pagetable_done = true;
 
 out:
-       srcu_read_unlock(&kvm->srcu, idx);
-
-out2:
        mutex_unlock(&kvm->slots_lock);
        return r;
 }