summaryrefslogtreecommitdiffstats
path: root/kvm-all.c
diff options
context:
space:
mode:
authorGleb Natapov2010-07-28 17:13:23 +0200
committerMarcelo Tosatti2010-08-05 14:57:36 +0200
commit14542fea73f294b2a195a8e17c5a0dd15f60640e (patch)
treebec8e9e401e92aabb4c9832893acd7c9946241d5 /kvm-all.c
parentkvm: Don't walk memory_size == 0 slots in kvm_client_migration_log (diff)
downloadqemu-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.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/kvm-all.c b/kvm-all.c
index 736c516862..85f2e5868f 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;