[PATCH 5/5] KVM: SVM: Potentially kvfree the ptr points to error page

From: Jiang Jiasheng
Date: Fri Sep 03 2021 - 05:40:30 EST


Directly use the sev_unpin_memory() may cause kvfree()
free the error page, for region->pages may point to the error page.

Signed-off-by: Jiang Jiasheng <jiasheng@xxxxxxxxxxx>
---
arch/x86/kvm/svm/sev.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
index 8d36f0c..ee7d691 100644
--- a/arch/x86/kvm/svm/sev.c
+++ b/arch/x86/kvm/svm/sev.c
@@ -1664,6 +1664,8 @@ find_enc_region(struct kvm *kvm, struct kvm_enc_region *range)
static void __unregister_enc_region_locked(struct kvm *kvm,
struct enc_region *region)
{
+ if (IS_ERR(region->pages))
+ return;
sev_unpin_memory(kvm, region->pages, region->npages);
list_del(&region->list);
kfree(region);
--
2.7.4