On 16/06/2016 21:28, marcandre.lur...@redhat.com wrote: > From: Marc-André Lureau <marcandre.lur...@redhat.com> > > This helps to remove various chardev resources leaks when leaving qemu. > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > qemu-char.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/qemu-char.c b/qemu-char.c > index c926e9a..98dcd49 100644 > --- a/qemu-char.c > +++ b/qemu-char.c > @@ -4541,6 +4541,15 @@ void qmp_chardev_remove(const char *id, Error **errp) > qemu_chr_delete(chr); > } > > +static void qemu_chr_cleanup(void) > +{ > + CharDriverState *chr; > + > + QTAILQ_FOREACH(chr, &chardevs, next) { > + qemu_chr_delete(chr); > + } > +}
FYI, this patch is necessary on top: diff --git a/qemu-char.c b/qemu-char.c index 016badb..bc04ced 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -4551,9 +4551,9 @@ static void qemu_chr_cleanup(void) { - CharDriverState *chr; + CharDriverState *chr, *tmp; - QTAILQ_FOREACH(chr, &chardevs, next) { + QTAILQ_FOREACH_SAFE(chr, &chardevs, next, tmp) { qemu_chr_delete(chr); } } (Reproducer: start QEMU with MALLOC_PERTURB_=42 and type "quit" on the monitor). Thanks, Paolo