Make sure to zero out memory before calling madvise to increase robustness
authorAnthony Liguori <aliguori@us.ibm.com>
Mon, 22 Jun 2009 17:39:00 +0000 (12:39 -0500)
committerAnthony Liguori <aliguori@us.ibm.com>
Wed, 24 Jun 2009 14:09:15 +0000 (09:09 -0500)
Avi pointed out that it's not entirely safe to rely on madvise zeroing out
memory.  So let's do it explicitly before calling madvise.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
vl.c

diff --git a/vl.c b/vl.c
index 60a00e1..1c077b4 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -3358,13 +3358,13 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
         
         if (flags & RAM_SAVE_FLAG_COMPRESS) {
             uint8_t ch = qemu_get_byte(f);
-#if defined(__linux__)
+            memset(qemu_get_ram_ptr(addr), ch, TARGET_PAGE_SIZE);
+#ifndef _WIN32
             if (ch == 0 &&
                 (!kvm_enabled() || kvm_has_sync_mmu())) {
                 madvise(qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE, MADV_DONTNEED);
-            } else
+            }
 #endif
-            memset(qemu_get_ram_ptr(addr), ch, TARGET_PAGE_SIZE);
         } else if (flags & RAM_SAVE_FLAG_PAGE)
             qemu_get_buffer(f, qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE);
     } while (!(flags & RAM_SAVE_FLAG_EOS));