Commit 779c6befc03122c819d2f81a2052fac6a4a43536

Authored by Anthony Liguori
1 parent 95533d5f

Make sure to zero out memory before calling madvise to increase robustness

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>
Showing 1 changed file with 3 additions and 3 deletions
@@ -3358,13 +3358,13 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id) @@ -3358,13 +3358,13 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
3358 3358
3359 if (flags & RAM_SAVE_FLAG_COMPRESS) { 3359 if (flags & RAM_SAVE_FLAG_COMPRESS) {
3360 uint8_t ch = qemu_get_byte(f); 3360 uint8_t ch = qemu_get_byte(f);
3361 -#if defined(__linux__) 3361 + memset(qemu_get_ram_ptr(addr), ch, TARGET_PAGE_SIZE);
  3362 +#ifndef _WIN32
3362 if (ch == 0 && 3363 if (ch == 0 &&
3363 (!kvm_enabled() || kvm_has_sync_mmu())) { 3364 (!kvm_enabled() || kvm_has_sync_mmu())) {
3364 madvise(qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE, MADV_DONTNEED); 3365 madvise(qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE, MADV_DONTNEED);
3365 - } else 3366 + }
3366 #endif 3367 #endif
3367 - memset(qemu_get_ram_ptr(addr), ch, TARGET_PAGE_SIZE);  
3368 } else if (flags & RAM_SAVE_FLAG_PAGE) 3368 } else if (flags & RAM_SAVE_FLAG_PAGE)
3369 qemu_get_buffer(f, qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE); 3369 qemu_get_buffer(f, qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE);
3370 } while (!(flags & RAM_SAVE_FLAG_EOS)); 3370 } while (!(flags & RAM_SAVE_FLAG_EOS));