aboutsummaryrefslogtreecommitdiff
path: root/arch_init.c
diff options
context:
space:
mode:
authorOrit Wasserman <owasserm@redhat.com>2014-01-30 20:08:37 +0200
committerJuan Quintela <quintela@redhat.com>2014-02-04 16:50:22 +0100
commita17b2fd3580d1da96e806c8b58e61255e8c57577 (patch)
treea55df342288def4ab1bbadea1dce5c4cf72003c1 /arch_init.c
parenta5615b14a66e86f620e90c8f4b3537c28bb328d4 (diff)
Don't abort on out of memory when creating page cache
Signed-off-by: Orit Wasserman <owasserm@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'arch_init.c')
-rw-r--r--arch_init.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/arch_init.c b/arch_init.c
index 5eff80b2a8..1fa5f1fdd4 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -664,8 +664,22 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
DPRINTF("Error creating cache\n");
return -1;
}
- XBZRLE.encoded_buf = g_malloc0(TARGET_PAGE_SIZE);
- XBZRLE.current_buf = g_malloc(TARGET_PAGE_SIZE);
+
+ /* We prefer not to abort if there is no memory */
+ XBZRLE.encoded_buf = g_try_malloc0(TARGET_PAGE_SIZE);
+ if (!XBZRLE.encoded_buf) {
+ DPRINTF("Error allocating encoded_buf\n");
+ return -1;
+ }
+
+ XBZRLE.current_buf = g_try_malloc(TARGET_PAGE_SIZE);
+ if (!XBZRLE.current_buf) {
+ DPRINTF("Error allocating current_buf\n");
+ g_free(XBZRLE.encoded_buf);
+ XBZRLE.encoded_buf = NULL;
+ return -1;
+ }
+
acct_clear();
}