diff options
author | Avi Kivity <avi@redhat.com> | 2009-07-12 17:57:20 +0300 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-07-12 17:57:20 +0300 |
commit | ea4e29cd3f85cc4e136954b340486cb03b2fca9c (patch) | |
tree | 8148ffef59efc6482e4bc969e41ab8a0d8b065af /osdep.c | |
parent | Remove leftover kvm_callbacks structure definition (diff) | |
parent | MIPS signal handling fix (diff) | |
download | qemu-kvm-ea4e29cd3f85cc4e136954b340486cb03b2fca9c.tar.gz qemu-kvm-ea4e29cd3f85cc4e136954b340486cb03b2fca9c.tar.bz2 qemu-kvm-ea4e29cd3f85cc4e136954b340486cb03b2fca9c.zip |
Merge commit '94c5495dd16ca3311cbc95705e58d28a45899d1d' into upstream-merge
* commit '94c5495dd16ca3311cbc95705e58d28a45899d1d':
MIPS signal handling fix
Enable MIPS NPTL
MIPS atomic instructions
MIPS usermode TLS register
Fix MIPS sys_clone
qdev: convert ac97.
qdev: convert es1370.
qdev/pci: misc fixes.
qdev: remove DeviceType
qdev: replace bus_type enum with bus_info struct.
qdev: update pci device registration.
Remove SDL/ prefix
Add out of memory and zero size argument checks to be consistent with
Fix the PCI header type of APB
Update OpenBIOS images to r505
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'osdep.c')
-rw-r--r-- | osdep.c | 30 |
1 files changed, 25 insertions, 5 deletions
@@ -51,10 +51,23 @@ #include "sysemu.h" #include "qemu_socket.h" +#if !defined(_POSIX_C_SOURCE) || defined(_WIN32) +static void *oom_check(void *ptr) +{ + if (ptr == NULL) { + abort(); + } + return ptr; +} +#endif + #if defined(_WIN32) void *qemu_memalign(size_t alignment, size_t size) { - return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); + if (!size) { + abort(); + } + return oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)); } void *qemu_vmalloc(size_t size) @@ -62,7 +75,10 @@ void *qemu_vmalloc(size_t size) /* FIXME: this is not exactly optimal solution since VirtualAlloc has 64Kb granularity, but at least it guarantees us that the memory is page aligned. */ - return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE); + if (!size) { + abort(); + } + return oom_check(VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE)); } void qemu_vfree(void *ptr) @@ -106,6 +122,10 @@ static void *kqemu_vmalloc(size_t size) struct statfs stfs; #endif + if (!size) { + abort (); + } + if (phys_ram_fd < 0) { tmpdir = getenv("QEMU_TMPDIR"); if (!tmpdir) @@ -188,12 +208,12 @@ void *qemu_memalign(size_t alignment, size_t size) void *ptr; ret = posix_memalign(&ptr, alignment, size); if (ret != 0) - return NULL; + abort(); return ptr; #elif defined(HOST_BSD) - return valloc(size); + return oom_check(valloc(size)); #else - return memalign(alignment, size); + return oom_check(memalign(alignment, size)); #endif } |