aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2023-05-15 15:26:04 +0200
committerMichael Tokarev <mjt@tls.msk.ru>2023-05-27 12:54:07 +0300
commitff692a15bbc13b6a12ce9d5e6802bdfc209c1ea3 (patch)
tree060ad2d255660a4fb918184e235efc373e8ae5c7
parent134253a4fe9a1307308f2908424c354f989ee52f (diff)
virtio: qmp: fix memory leak
The VirtioInfoList is already allocated by QAPI_LIST_PREPEND and need not be allocated by the caller. Fixes Coverity CID 1508724. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> (cherry picked from commit 0bfd14149b248e8097ea4da1f9d53beb5c5b0cca) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
-rw-r--r--hw/virtio/virtio-qmp.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/hw/virtio/virtio-qmp.c b/hw/virtio/virtio-qmp.c
index b70148aba9..3d7ce2ea2f 100644
--- a/hw/virtio/virtio-qmp.c
+++ b/hw/virtio/virtio-qmp.c
@@ -666,7 +666,7 @@ VirtioDeviceFeatures *qmp_decode_features(uint16_t device_id, uint64_t bitmap)
VirtioInfoList *qmp_x_query_virtio(Error **errp)
{
VirtioInfoList *list = NULL;
- VirtioInfoList *node;
+ VirtioInfo *node;
VirtIODevice *vdev;
QTAILQ_FOREACH(vdev, &virtio_list, next) {
@@ -680,11 +680,10 @@ VirtioInfoList *qmp_x_query_virtio(Error **errp)
if (!strncmp(is_realized->str, "false", 4)) {
QTAILQ_REMOVE(&virtio_list, vdev, next);
} else {
- node = g_new0(VirtioInfoList, 1);
- node->value = g_new(VirtioInfo, 1);
- node->value->path = g_strdup(dev->canonical_path);
- node->value->name = g_strdup(vdev->name);
- QAPI_LIST_PREPEND(list, node->value);
+ node = g_new(VirtioInfo, 1);
+ node->path = g_strdup(dev->canonical_path);
+ node->name = g_strdup(vdev->name);
+ QAPI_LIST_PREPEND(list, node);
}
g_string_free(is_realized, true);
}