[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.7 6/9] virtio-input: free config list
From: |
marcandre . lureau |
Subject: |
[Qemu-devel] [PULL for-2.7 6/9] virtio-input: free config list |
Date: |
Mon, 8 Aug 2016 00:05:58 +0400 |
From: Marc-André Lureau <address@hidden>
Clear the list when finalizing. The list is created during realize with
virtio_input_idstr_config() and later by further calls to
virtio_input_init_config() and virtio_input_add_config().
This leak can be reproduced with device-introspect-test -p
/x86_64/device/introspect/concrete.
Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Gerd Hoffmann <address@hidden>
---
hw/input/virtio-input.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c
index a87fd68..ccdf730 100644
--- a/hw/input/virtio-input.c
+++ b/hw/input/virtio-input.c
@@ -270,6 +270,16 @@ static void virtio_input_device_realize(DeviceState *dev,
Error **errp)
vinput->sts = virtio_add_queue(vdev, 64, virtio_input_handle_sts);
}
+static void virtio_input_finalize(Object *obj)
+{
+ VirtIOInput *vinput = VIRTIO_INPUT(obj);
+ VirtIOInputConfig *cfg, *next;
+
+ QTAILQ_FOREACH_SAFE(cfg, &vinput->cfg_list, node, next) {
+ QTAILQ_REMOVE(&vinput->cfg_list, cfg, node);
+ g_free(cfg);
+ }
+}
static void virtio_input_device_unrealize(DeviceState *dev, Error **errp)
{
VirtIOInputClass *vic = VIRTIO_INPUT_GET_CLASS(dev);
@@ -318,6 +328,7 @@ static const TypeInfo virtio_input_info = {
.class_size = sizeof(VirtIOInputClass),
.class_init = virtio_input_class_init,
.abstract = true,
+ .instance_finalize = virtio_input_finalize,
};
/* ----------------------------------------------------------------- */
--
2.9.0
- [Qemu-devel] [PULL for-2.7 0/9] Leak fixes for 2.7, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 1/9] numa: do not leak NumaOptions, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 2/9] char: free the tcp connection data when closing, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 3/9] char: free MuxDriver when closing, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 4/9] ahci: free irqs array, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 5/9] qjson: free str, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 6/9] virtio-input: free config list,
marcandre . lureau <=
- [Qemu-devel] [PULL for-2.7 7/9] usb: free USBDevice.strings, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 8/9] usb: free leaking path, marcandre . lureau, 2016/08/07
- [Qemu-devel] [PULL for-2.7 9/9] ahci: fix sglist leak on retry, marcandre . lureau, 2016/08/07
- Re: [Qemu-devel] [PULL for-2.7 0/9] Leak fixes for 2.7, Peter Maydell, 2016/08/08