diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index ee653dd4eb27..c5ac9bd87b99 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -2005,22 +2005,13 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, if (ret != 1) return ret; - ret = 0; - ret = kvm_s2_fault_compute_prot(fault); - if (ret == 1) { - ret = 1; /* fault injected */ - goto out_put_page; + if (ret) { + kvm_release_page_unused(fault->page); + return ret; } - if (ret) - goto out_put_page; - ret = kvm_s2_fault_map(fault, memcache); - return ret; - -out_put_page: - kvm_release_page_unused(fault->page); - return ret; + return kvm_s2_fault_map(fault, memcache); } /* Resolve the access fault by making the page young again. */