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);