From: Sean Christopherson <seanjc@google.com>
Date: Wed, 30 Nov 2022 23:09:01 +0000
Subject: KVM: arm64: Free hypervisor allocations if vector slot init fails
Git-commit: 6baaeda878445dc7b9e86f614ac39bf137c385af
Patch-mainline: v6.3-rc1
References: git-fixes
Teardown hypervisor mode if vector slot setup fails in order to avoid
leaking any allocations done by init_hyp_mode().
Fixes: b881cdce77b4 ("KVM: arm64: Allocate hyp vectors statically")
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20221130230934.1014142-18-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Acked-by: Ivan T. Ivanov <iivanov@suse.de>
---
arch/arm64/kvm/arm.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -2127,18 +2127,18 @@ int kvm_arch_init(void *opaque)
err = kvm_init_vector_slots();
if (err) {
kvm_err("Cannot initialise vector slots\n");
- goto out_err;
+ goto out_hyp;
}
err = init_subsystems();
if (err)
- goto out_hyp;
+ goto out_subs;
if (!in_hyp_mode) {
err = finalize_hyp_mode();
if (err) {
kvm_err("Failed to finalize Hyp protection\n");
- goto out_hyp;
+ goto out_subs;
}
}
@@ -2152,8 +2152,9 @@ int kvm_arch_init(void *opaque)
return 0;
-out_hyp:
+out_subs:
hyp_cpu_pm_exit();
+out_hyp:
if (!in_hyp_mode)
teardown_hyp_mode();
out_err: