From: Marcelo Tosatti <[EMAIL PROTECTED]>

Account for the case where memslot size is largepage aligned, but does not
start on largepage aligned offset.

Otherwise it allocates one lpage_info struct less than what the memslot
spans, possibly resulting in memory corruption.

Signed-off-by: Marcelo Tosatti <[EMAIL PROTECTED]>
Signed-off-by: Avi Kivity <[EMAIL PROTECTED]>

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 3396a5f..93ed78b 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -347,6 +347,9 @@ int __kvm_set_memory_region(struct kvm *kvm,
                int largepages = npages / KVM_PAGES_PER_HPAGE;
                if (npages % KVM_PAGES_PER_HPAGE)
                        largepages++;
+               if (base_gfn % KVM_PAGES_PER_HPAGE)
+                       largepages++;
+
                new.lpage_info = vmalloc(largepages * sizeof(*new.lpage_info));
 
                if (!new.lpage_info)

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Register now and save $200. Hurry, offer ends at 11:59 p.m., 
Monday, April 7! Use priority code J8TLD2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-commits mailing list
kvm-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-commits

Reply via email to