From: Ingo Molnar <[EMAIL PROTECTED]>
Subject: [patch] KVM: fix vcpu freeing bug

vcpu_load() can return NULL and it sometimes does in failure paths (for 
example when the userspace ABI version is too old) - causing a 
preemption count underflow in the ->vcpu_free() later on. So check for 
NULL.

Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>

Index: linux/drivers/kvm/kvm_main.c
===================================================================
--- linux.orig/drivers/kvm/kvm_main.c
+++ linux/drivers/kvm/kvm_main.c
@@ -357,7 +357,9 @@ static void kvm_free_physmem(struct kvm 
 
 static void kvm_free_vcpu(struct kvm_vcpu *vcpu)
 {
-       vcpu_load(vcpu->kvm, vcpu_slot(vcpu));
+       if (!vcpu_load(vcpu->kvm, vcpu_slot(vcpu)))
+               return;
+
        kvm_mmu_destroy(vcpu);
        vcpu_put(vcpu);
        kvm_arch_ops->vcpu_free(vcpu);

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to