From 3743888cafbada95d9907a1b5fb001993b1ee03e Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Fri, 4 Apr 2008 17:21:22 -0300 Subject: KVM: MMU: account for start offset on largepage aligned-sized memslots 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 Signed-off-by: Avi Kivity --- virt/kvm/kvm_main.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'virt') diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 3396a5f9be5d..93ed78b015c0 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) -- cgit v1.2.3