From 2e85fe731ac90701ba12d99e7514ffc986621ae5 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Wed, 16 Nov 2022 10:53:00 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Avoid unnecessary unmap walk in MEM_RELINQUISH hypercall If the mapping is determined to be not present in an earlier walk, attempting the unmap is pointless. Bug: 259217067 Change-Id: I6fd939556b80d7a9a0731cab36166a652f7a7c6d Signed-off-by: Keir Fraser --- arch/arm64/kvm/hyp/nvhe/mem_protect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/hyp/nvhe/mem_protect.c b/arch/arm64/kvm/hyp/nvhe/mem_protect.c index 5023100f581d..0db8ebd60ba1 100644 --- a/arch/arm64/kvm/hyp/nvhe/mem_protect.c +++ b/arch/arm64/kvm/hyp/nvhe/mem_protect.c @@ -372,7 +372,7 @@ int __pkvm_guest_relinquish_to_host(struct pkvm_hyp_vcpu *vcpu, ret = kvm_pgtable_walk(&vm->pgt, ipa, PAGE_SIZE, &walker); /* Zap the guest stage2 pte. */ - if (!ret) + if (!ret && data.pa) kvm_pgtable_stage2_unmap(&vm->pgt, ipa, PAGE_SIZE); guest_unlock_component(vm);