From bdf9b0a6415bb78b74bbf94dcf054742304931b0 Mon Sep 17 00:00:00 2001 From: Vincent Donnefort Date: Mon, 23 Dec 2024 15:17:44 +0000 Subject: [PATCH] ANDROID: KVM: arm64: Fix pKVM VM teardown leak Somehow, commit 144a77d17898 ("Merge 6.12.2 into android16-6.12") has removed the stage2_mc free for pKVM. That creates a leak after VM teardown. Bug: 357781595 Bug: 385687347 Change-Id: I6381cafc8fdf3706a3c469cd2c871cff3a589ea3 Signed-off-by: Vincent Donnefort --- arch/arm64/kvm/arm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index c7bb66401755..dc30e18a5700 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -528,7 +528,14 @@ void kvm_arch_vcpu_postcreate(struct kvm_vcpu *vcpu) void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu) { - kvm_mmu_free_memory_cache(&vcpu->arch.mmu_page_cache); + if (is_protected_kvm_enabled()) { + atomic64_sub(vcpu->arch.stage2_mc.nr_pages << PAGE_SHIFT, + &vcpu->kvm->stat.protected_hyp_mem); + free_hyp_memcache(&vcpu->arch.stage2_mc); + } else { + kvm_mmu_free_memory_cache(&vcpu->arch.mmu_page_cache); + } + kvm_timer_vcpu_terminate(vcpu); kvm_pmu_vcpu_destroy(vcpu); kvm_vgic_vcpu_destroy(vcpu);