]> Git Repo - qemu.git/commitdiff
vhost: Fix memory region section comparison
authorDr. David Alan Gilbert <[email protected]>
Wed, 14 Aug 2019 17:55:35 +0000 (18:55 +0100)
committerMichael S. Tsirkin <[email protected]>
Wed, 25 Sep 2019 14:16:39 +0000 (10:16 -0400)
Using memcmp to compare structures wasn't safe,
as I found out on ARM when I was getting falce miscompares.

Use the helper function for comparing the MRSs.

Fixes: ade6d081fc33948e56e6 ("vhost: Regenerate region list from changed sections list")
Cc: [email protected]
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
Message-Id: <20190814175535[email protected]>
Reviewed-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
hw/virtio/vhost.c

index 34accdf6153d15d105e709a5dd931a3ff47a742a..2386b511f311223c1938aea5c2db5dbcdafa4080 100644 (file)
@@ -451,8 +451,13 @@ static void vhost_commit(MemoryListener *listener)
         changed = true;
     } else {
         /* Same size, lets check the contents */
-        changed = n_old_sections && memcmp(dev->mem_sections, old_sections,
-                         n_old_sections * sizeof(old_sections[0])) != 0;
+        for (int i = 0; i < n_old_sections; i++) {
+            if (!MemoryRegionSection_eq(&old_sections[i],
+                                        &dev->mem_sections[i])) {
+                changed = true;
+                break;
+            }
+        }
     }
 
     trace_vhost_commit(dev->started, changed);
This page took 0.029158 seconds and 4 git commands to generate.