Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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 0bfd141)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
  • Loading branch information
bonzini authored and Michael Tokarev committed May 27, 2023
1 parent 134253a commit ff692a1
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions hw/virtio/virtio-qmp.c
Expand Up @@ -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) {
Expand All @@ -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);
}
Expand Down

0 comments on commit ff692a1

Please sign in to comment.