]> git.proxmox.com Git - qemu.git/blobdiff - exec.c
memory: fix I/O port aliases
[qemu.git] / exec.c
diff --git a/exec.c b/exec.c
index 3ce35399d6f8af61056b70866cf6c0227809a856..1e5bbd6378a8ee2adaedb10ab7a1cad6252a24a3 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -3668,9 +3668,13 @@ static void io_commit(MemoryListener *listener)
 static void io_region_add(MemoryListener *listener,
                           MemoryRegionSection *section)
 {
-    iorange_init(&section->mr->iorange, &memory_region_iorange_ops,
+    MemoryRegionIORange *mrio = g_new(MemoryRegionIORange, 1);
+
+    mrio->mr = section->mr;
+    mrio->offset = section->offset_within_region;
+    iorange_init(&mrio->iorange, &memory_region_iorange_ops,
                  section->offset_within_address_space, section->size);
-    ioport_register(&section->mr->iorange);
+    ioport_register(&mrio->iorange);
 }
 
 static void io_region_del(MemoryListener *listener,