From: Gleb Natapov Date: Wed, 28 Jul 2010 15:13:23 +0000 (+0300) Subject: kvm: remove guest triggerable abort() X-Git-Tag: v0.14.0-rc0~756^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=14542fea73f294b2a195a8e17c5a0dd15f60640e;p=thirdparty%2Fqemu.git kvm: remove guest triggerable abort() This abort() condition is easily triggerable by a guest if it configures pci bar with unaligned address that overlaps main memory. Signed-off-by: Gleb Natapov Signed-off-by: Marcelo Tosatti --- diff --git a/kvm-all.c b/kvm-all.c index 736c5168622..85f2e5868f8 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -432,18 +432,10 @@ static void kvm_set_phys_mem(target_phys_addr_t start_addr, KVMSlot *mem, old; int err; - if (start_addr & ~TARGET_PAGE_MASK) { - if (flags >= IO_MEM_UNASSIGNED) { - if (!kvm_lookup_overlapping_slot(s, start_addr, - start_addr + size)) { - return; - } - fprintf(stderr, "Unaligned split of a KVM memory slot\n"); - } else { - fprintf(stderr, "Only page-aligned memory slots supported\n"); - } - abort(); - } + /* kvm works in page size chunks, but the function may be called + with sub-page size and unaligned start address. */ + size = TARGET_PAGE_ALIGN(size); + start_addr = TARGET_PAGE_ALIGN(start_addr); /* KVM does not support read-only slots */ phys_offset &= ~IO_MEM_ROM;