summaryrefslogtreecommitdiff
path: root/exec.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2013-05-13 16:19:56 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2013-05-14 08:53:31 -0500
commite7a09b92b70786f9e8c5fbf787e0248c6ebbe707 (patch)
tree4a24722a71dd1194a7f7cb455ef48e504925d34d /exec.c
parent6eebf958abf3f3f701116d4524ef88bb9fd6e341 (diff)
downloadqemu-e7a09b92b70786f9e8c5fbf787e0248c6ebbe707.tar.gz
osdep: introduce qemu_anon_ram_free to free qemu_anon_ram_alloc-ed memory
We switched from qemu_memalign to mmap() but then we don't modify qemu_vfree() to do a munmap() over free(). Which we cannot do because qemu_vfree() frees memory allocated by qemu_{mem,block}align. Introduce a new function that does the munmap(), luckily the size is available in the RAMBlock. Reported-by: Amos Kong <akong@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Amos Kong <akong@redhat.com> Message-id: 1368454796-14989-3-git-send-email-pbonzini@redhat.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'exec.c')
-rw-r--r--exec.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/exec.c b/exec.c
index 49344577ea..aec65c5063 100644
--- a/exec.c
+++ b/exec.c
@@ -1156,21 +1156,17 @@ void qemu_ram_free(ram_addr_t addr)
munmap(block->host, block->length);
close(block->fd);
} else {
- qemu_vfree(block->host);
+ qemu_anon_ram_free(block->host, block->length);
}
#else
abort();
#endif
} else {
-#if defined(TARGET_S390X) && defined(CONFIG_KVM)
- munmap(block->host, block->length);
-#else
if (xen_enabled()) {
xen_invalidate_map_cache_entry(block->host);
} else {
- qemu_vfree(block->host);
+ qemu_anon_ram_free(block->host, block->length);
}
-#endif
}
g_free(block);
break;