[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1577931640-29420-1-git-send-email-linmiaohe@huawei.com>
Date: Thu, 2 Jan 2020 10:20:40 +0800
From: linmiaohe <linmiaohe@...wei.com>
To: <pbonzini@...hat.com>, <rkrcmar@...hat.com>,
<sean.j.christopherson@...el.com>, <vkuznets@...hat.com>,
<wanpengli@...cent.com>, <jmattson@...gle.com>, <joro@...tes.org>,
<tglx@...utronix.de>, <mingo@...hat.com>, <bp@...en8.de>,
<hpa@...or.com>
CC: <linmiaohe@...wei.com>, <liran.alon@...cle.com>,
<kvm@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<x86@...nel.org>
Subject: [PATCH] KVM: SVM: Fix potential memory leak in svm_cpu_init()
From: Miaohe Lin <linmiaohe@...wei.com>
When kmalloc memory for sd->sev_vmcbs failed, we forget to free the page
held by sd->save_area.
Signed-off-by: Miaohe Lin <linmiaohe@...wei.com>
---
arch/x86/kvm/svm.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 8f1b715dfde8..89eb382e8580 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1012,7 +1012,7 @@ static int svm_cpu_init(int cpu)
r = -ENOMEM;
sd->save_area = alloc_page(GFP_KERNEL);
if (!sd->save_area)
- goto err_1;
+ goto free_cpu_data;
if (svm_sev_enabled()) {
r = -ENOMEM;
@@ -1020,14 +1020,16 @@ static int svm_cpu_init(int cpu)
sizeof(void *),
GFP_KERNEL);
if (!sd->sev_vmcbs)
- goto err_1;
+ goto free_save_area;
}
per_cpu(svm_data, cpu) = sd;
return 0;
-err_1:
+free_save_area:
+ __free_page(sd->save_area);
+free_cpu_data:
kfree(sd);
return r;
--
2.19.1
Powered by blists - more mailing lists