[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 12/15] gluster: Plug memory leaks in qemu_gluste
From: |
Niels de Vos |
Subject: |
Re: [Qemu-block] [PATCH 12/15] gluster: Plug memory leaks in qemu_gluster_parse_json() |
Date: |
Thu, 2 Mar 2017 23:11:25 -0800 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Thu, Mar 02, 2017 at 10:44:03PM +0100, Markus Armbruster wrote:
> To reproduce, run
>
> $ valgrind qemu-system-x86_64 --nodefaults -S --drive
> driver=gluster,volume=testvol,path=/a/b/c,server.0.type=xxx
>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
> block/gluster.c | 28 ++++++++++++++--------------
> 1 file changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/block/gluster.c b/block/gluster.c
> index 6fbcf9e..35a7abb 100644
> --- a/block/gluster.c
> +++ b/block/gluster.c
> @@ -480,7 +480,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster
> *gconf,
> QDict *options, Error **errp)
> {
> QemuOpts *opts;
> - GlusterServer *gsconf;
> + GlusterServer *gsconf = NULL;
> GlusterServerList *curr = NULL;
> QDict *backing_options = NULL;
> Error *local_err = NULL;
> @@ -529,17 +529,16 @@ static int
> qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
> }
>
> ptr = qemu_opt_get(opts, GLUSTER_OPT_TYPE);
> + if (!ptr) {
> + error_setg(&local_err, QERR_MISSING_PARAMETER, GLUSTER_OPT_TYPE);
> + error_append_hint(&local_err, GERR_INDEX_HINT, i);
> + goto out;
> +
> + }
> gsconf = g_new0(GlusterServer, 1);
> gsconf->type = qapi_enum_parse(GlusterTransport_lookup, ptr,
> - GLUSTER_TRANSPORT__MAX,
> - GLUSTER_TRANSPORT__MAX,
> + GLUSTER_TRANSPORT__MAX, 0,
What is the reason to set the default to 0 and not the more readable
GLUSTER_TRANSPORT_UNIX?
> &local_err);
> - if (!ptr) {
> - error_setg(&local_err, QERR_MISSING_PARAMETER, GLUSTER_OPT_TYPE);
> - error_append_hint(&local_err, GERR_INDEX_HINT, i);
> - goto out;
> -
> - }
> if (local_err) {
> error_append_hint(&local_err,
> "Parameter '%s' may be 'tcp' or 'unix'\n",
> @@ -626,8 +625,10 @@ static int
> qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
> curr->next->value = gsconf;
> curr = curr->next;
> }
> + gsconf = NULL;
>
> - qdict_del(backing_options, str);
> + QDECREF(backing_options);
> + backing_options = NULL;
> g_free(str);
> str = NULL;
> }
> @@ -636,11 +637,10 @@ static int
> qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
>
> out:
> error_propagate(errp, local_err);
> + qapi_free_GlusterServer(gsconf);
> qemu_opts_del(opts);
> - if (str) {
> - qdict_del(backing_options, str);
> - g_free(str);
> - }
> + g_free(str);
> + QDECREF(backing_options);
> errno = EINVAL;
> return -errno;
> }
> --
> 2.7.4
>
>
[Qemu-block] [PATCH 06/15] sheepdog: Don't truncate long VDI name in _open(), _create(), Markus Armbruster, 2017/03/02
Re: [Qemu-block] [Qemu-devel] [PATCH 06/15] sheepdog: Don't truncate long VDI name in _open(), _create(), Philippe Mathieu-Daudé, 2017/03/02