diff options
author | Gleb Natapov | 2010-07-28 17:13:23 +0200 |
---|---|---|
committer | Marcelo Tosatti | 2010-08-05 14:57:36 +0200 |
commit | 14542fea73f294b2a195a8e17c5a0dd15f60640e (patch) | |
tree | bec8e9e401e92aabb4c9832893acd7c9946241d5 /kvm-all.c | |
parent | kvm: Don't walk memory_size == 0 slots in kvm_client_migration_log (diff) | |
download | qemu-14542fea73f294b2a195a8e17c5a0dd15f60640e.tar.gz qemu-14542fea73f294b2a195a8e17c5a0dd15f60640e.tar.xz qemu-14542fea73f294b2a195a8e17c5a0dd15f60640e.zip |
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 <gleb@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 16 |
1 files changed, 4 insertions, 12 deletions
@@ -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; |