[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] qapi: fix memory leak in QmpOutputVisitor
From: |
Pino Toscano |
Subject: |
Re: [Qemu-devel] [PATCH] qapi: fix memory leak in QmpOutputVisitor |
Date: |
Tue, 18 Oct 2016 13:22:49 +0200 |
User-agent: |
KMail/5.3.1 (Linux/4.7.3-200.fc24.x86_64; KDE/5.26.0; x86_64; ; ) |
On Tuesday, 18 October 2016 06:13:30 CEST Eric Blake wrote:
> On 10/18/2016 04:17 AM, Pino Toscano wrote:
> > qmp_output_start_struct() and qmp_output_start_list() create a new
> > QObject (QDict, QList) and push it to the stack of the QmpOutputVisitor,
> > where it is saved as 'value'. When freeing the iterator in
> > qmp_output_free(), these values are never freed properly.
>
> Do any of the tests (perhaps run under valgrind) show this leak? If not,
> maybe we should enhance their coverage.
Running a simple `qemu-img info file.qcow2` under valgrind was enough
for me to show the leak.
In this case, another simple fix is needed to fully fix the leak:
http://lists.nongnu.org/archive/html/qemu-devel/2016-10/msg04023.html
(Yes, I just saw your ACK on this, Eric, just leaving it here for
reference.)
> >
> > The simple solution is to qobject_decref() them.
> > ---
> > qapi/qmp-output-visitor.c | 1 +
> > 1 file changed, 1 insertion(+)
>
> Reviewed-by: Eric Blake <address@hidden>
>
> >
> > diff --git a/qapi/qmp-output-visitor.c b/qapi/qmp-output-visitor.c
> > index 9e3b67c..eedf256 100644
> > --- a/qapi/qmp-output-visitor.c
> > +++ b/qapi/qmp-output-visitor.c
> > @@ -220,6 +220,7 @@ static void qmp_output_free(Visitor *v)
> > while (!QSLIST_EMPTY(&qov->stack)) {
> > e = QSLIST_FIRST(&qov->stack);
> > QSLIST_REMOVE_HEAD(&qov->stack, node);
> > + qobject_decref(e->value);
> > g_free(e);
> > }
> >
> >
>
>
--
Pino Toscano
signature.asc
Description: This is a digitally signed message part.