From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38333) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xyxe4-0000LP-0F for qemu-devel@nongnu.org; Thu, 11 Dec 2014 01:54:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xyxdz-0005KW-2O for qemu-devel@nongnu.org; Thu, 11 Dec 2014 01:54:39 -0500 Received: from szxga01-in.huawei.com ([119.145.14.64]:44312) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xyxdy-0005IX-Bf for qemu-devel@nongnu.org; Thu, 11 Dec 2014 01:54:34 -0500 Message-ID: <54893F7C.20801@huawei.com> Date: Thu, 11 Dec 2014 14:53:48 +0800 From: Gonglei MIME-Version: 1.0 References: <1417674851-6248-1-git-send-email-arei.gonglei@huawei.com> In-Reply-To: <1417674851-6248-1-git-send-email-arei.gonglei@huawei.com> Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] block/rbd: fix memory leak List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Gonglei (Arei)" Cc: "kwolf@redhat.com" , "josh.durgin@inktank.com" , "qemu-devel@nongnu.org" , "stefanha@redhat.com" , Markus Armbruster On 2014/12/4 14:34, Gonglei (Arei) wrote: > From: Gonglei > > Variable local_err going out of scope > leaks the storage it points to. > > Cc: Markus Armbruster > Signed-off-by: Gonglei > --- > block/rbd.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > Ping... > diff --git a/block/rbd.c b/block/rbd.c > index 5b5a64a..f3ab2dd 100644 > --- a/block/rbd.c > +++ b/block/rbd.c > @@ -459,7 +459,7 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags, > clientname = qemu_rbd_parse_clientname(conf, clientname_buf); > r = rados_create(&s->cluster, clientname); > if (r < 0) { > - error_setg(&local_err, "error initializing"); > + error_setg(errp, "error initializing"); > goto failed_opts; > } > > @@ -495,19 +495,19 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags, > > r = rados_connect(s->cluster); > if (r < 0) { > - error_setg(&local_err, "error connecting"); > + error_setg(errp, "error connecting"); > goto failed_shutdown; > } > > r = rados_ioctx_create(s->cluster, pool, &s->io_ctx); > if (r < 0) { > - error_setg(&local_err, "error opening pool %s", pool); > + error_setg(errp, "error opening pool %s", pool); > goto failed_shutdown; > } > > r = rbd_open(s->io_ctx, s->name, &s->image, s->snap); > if (r < 0) { > - error_setg(&local_err, "error reading header from %s", s->name); > + error_setg(errp, "error reading header from %s", s->name); > goto failed_open; > } >