memory: check address space when a listener is registered
authorJulien Grall <julien.grall@citrix.com>
Wed, 4 Apr 2012 14:15:41 +0000 (15:15 +0100)
committerAvi Kivity <avi@redhat.com>
Thu, 5 Apr 2012 10:09:17 +0000 (13:09 +0300)
This patch resolves a bug in memory listener registration.
"range_add" callback  was called on each section of the both
address space (IO and memory space) even if it doesn't match
the address space filter.

Signed-off-by: Julien Grall <julien.grall@citrix.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
memory.c

index a3f5b59..aab4a31 100644 (file)
--- a/memory.c
+++ b/memory.c
@@ -1444,6 +1444,11 @@ static void listener_add_address_space(MemoryListener *listener,
 {
     FlatRange *fr;
 
+    if (listener->address_space_filter
+        && listener->address_space_filter != as->root) {
+        return;
+    }
+
     if (global_dirty_log) {
         listener->log_global_start(listener);
     }