Commit 2a5755bb authored by Peter Xu's avatar Peter Xu Committed by Paolo Bonzini

KVM: X86: Don't take srcu lock in init_rmode_identity_map()

We've already got the slots_lock, so we should be safe.
Signed-off-by: default avatarPeter Xu <peterx@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent fcd97ad5
...@@ -3483,7 +3483,7 @@ static int init_rmode_tss(struct kvm *kvm) ...@@ -3483,7 +3483,7 @@ static int init_rmode_tss(struct kvm *kvm)
static int init_rmode_identity_map(struct kvm *kvm) static int init_rmode_identity_map(struct kvm *kvm)
{ {
struct kvm_vmx *kvm_vmx = to_kvm_vmx(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; kvm_pfn_t identity_map_pfn;
u32 tmp; u32 tmp;
...@@ -3491,7 +3491,7 @@ static int init_rmode_identity_map(struct kvm *kvm) ...@@ -3491,7 +3491,7 @@ static int init_rmode_identity_map(struct kvm *kvm)
mutex_lock(&kvm->slots_lock); mutex_lock(&kvm->slots_lock);
if (likely(kvm_vmx->ept_identity_pagetable_done)) if (likely(kvm_vmx->ept_identity_pagetable_done))
goto out2; goto out;
if (!kvm_vmx->ept_identity_map_addr) if (!kvm_vmx->ept_identity_map_addr)
kvm_vmx->ept_identity_map_addr = VMX_EPT_IDENTITY_PAGETABLE_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) ...@@ -3500,9 +3500,8 @@ static int init_rmode_identity_map(struct kvm *kvm)
r = __x86_set_memory_region(kvm, IDENTITY_PAGETABLE_PRIVATE_MEMSLOT, r = __x86_set_memory_region(kvm, IDENTITY_PAGETABLE_PRIVATE_MEMSLOT,
kvm_vmx->ept_identity_map_addr, PAGE_SIZE); kvm_vmx->ept_identity_map_addr, PAGE_SIZE);
if (r < 0) 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); r = kvm_clear_guest_page(kvm, identity_map_pfn, 0, PAGE_SIZE);
if (r < 0) if (r < 0)
goto out; goto out;
...@@ -3518,9 +3517,6 @@ static int init_rmode_identity_map(struct kvm *kvm) ...@@ -3518,9 +3517,6 @@ static int init_rmode_identity_map(struct kvm *kvm)
kvm_vmx->ept_identity_pagetable_done = true; kvm_vmx->ept_identity_pagetable_done = true;
out: out:
srcu_read_unlock(&kvm->srcu, idx);
out2:
mutex_unlock(&kvm->slots_lock); mutex_unlock(&kvm->slots_lock);
return r; return r;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment