On 16/06/2016 21:28, [email protected] wrote:
> From: Marc-André Lureau <[email protected]>
>
> This helps to remove various chardev resources leaks when leaving qemu.
>
> Signed-off-by: Marc-André Lureau <[email protected]>
> ---
> 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