All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Orit Wasserman <owasserm@redhat.com>
Cc: peter.maydell@linaro.org, quintela@redhat.com,
	qemu-devel@nongnu.org, anthony@codemonkey.ws,
	dgilbert@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 5/6] Don't abort on out of memory when creating page cache
Date: Thu, 30 Jan 2014 18:21:10 +0000	[thread overview]
Message-ID: <20140130182109.GG2655@work-vm> (raw)
In-Reply-To: <1391105318-23247-6-git-send-email-owasserm@redhat.com>

* Orit Wasserman (owasserm@redhat.com) wrote:
> Signed-off-by: Orit Wasserman <owasserm@redhat.com>
> ---
>  arch_init.c  | 18 ++++++++++++++++--
>  page_cache.c | 18 ++++++++++++++----
>  2 files changed, 30 insertions(+), 6 deletions(-)

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> 
> diff --git a/arch_init.c b/arch_init.c
> index 5eff80b..1fa5f1f 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();
>      }
>  
> diff --git a/page_cache.c b/page_cache.c
> index a05db64..62a53f8 100644
> --- a/page_cache.c
> +++ b/page_cache.c
> @@ -60,8 +60,12 @@ PageCache *cache_init(int64_t num_pages, unsigned int page_size)
>          return NULL;
>      }
>  
> -    cache = g_malloc(sizeof(*cache));
> -
> +    /* We prefer not to abort if there is no memory */
> +    cache = g_try_malloc(sizeof(*cache));
> +    if (!cache) {
> +        DPRINTF("Failed to allocate cache\n");
> +        return NULL;
> +    }
>      /* round down to the nearest power of 2 */
>      if (!is_power_of_2(num_pages)) {
>          num_pages = pow2floor(num_pages);
> @@ -74,8 +78,14 @@ PageCache *cache_init(int64_t num_pages, unsigned int page_size)
>  
>      DPRINTF("Setting cache buckets to %" PRId64 "\n", cache->max_num_items);
>  
> -    cache->page_cache = g_malloc((cache->max_num_items) *
> -                                 sizeof(*cache->page_cache));
> +    /* We prefer not to abort if there is no memory */
> +    cache->page_cache = g_try_malloc((cache->max_num_items) *
> +                                     sizeof(*cache->page_cache));
> +    if (!cache->page_cache) {
> +        DPRINTF("Failed to allocate cache->page_cache\n");
> +        g_free(cache);
> +        return NULL;
> +    }
>  
>      for (i = 0; i < cache->max_num_items; i++) {
>          cache->page_cache[i].it_data = NULL;
> -- 
> 1.8.3.1
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

  reply	other threads:[~2014-01-30 18:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-30 18:08 [Qemu-devel] [PATCH v2 0/6] XBZRLE Fixes Orit Wasserman
2014-01-30 18:08 ` [Qemu-devel] [PATCH v2 1/6] Set xbzrle buffers to NULL after freeing them to avoid double free errors Orit Wasserman
2014-01-30 18:08 ` [Qemu-devel] [PATCH v2 2/6] Add check for cache size smaller than page size Orit Wasserman
2014-01-30 18:08 ` [Qemu-devel] [PATCH v2 3/6] migration:fix free XBZRLE decoded_buf wrong Orit Wasserman
2014-01-30 18:08 ` [Qemu-devel] [PATCH v2 4/6] XBZRLE cache size should not be larger than guest memory size Orit Wasserman
2014-01-30 18:23   ` Dr. David Alan Gilbert
2014-01-30 18:42     ` Orit Wasserman
2014-01-30 18:48       ` Dr. David Alan Gilbert
2014-01-30 18:59         ` Orit Wasserman
2014-01-30 18:45   ` Dr. David Alan Gilbert
2014-01-30 18:08 ` [Qemu-devel] [PATCH v2 5/6] Don't abort on out of memory when creating page cache Orit Wasserman
2014-01-30 18:21   ` Dr. David Alan Gilbert [this message]
2014-01-30 18:08 ` [Qemu-devel] [PATCH v2 6/6] Don't abort on memory allocation error Orit Wasserman
2014-01-30 18:17   ` Dr. David Alan Gilbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140130182109.GG2655@work-vm \
    --to=dgilbert@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=owasserm@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.