Hi Phil, On 11/21/23 18:40, Philippe Mathieu-Daudé wrote: > Commit 0be6bfac62 ("qdev: Implement variable length array properties") > added the DEFINE_PROP_ARRAY() macro with the following comment: > > * It is the responsibility of the device deinit code to free the > * @_arrayfield memory. > > Commit 8077b8e549 added: > > DEFINE_PROP_ARRAY("reserved-regions", VirtIOIOMMUPCI, > vdev.nb_reserved_regions, vdev.reserved_regions, > qdev_prop_reserved_region, ReservedRegion), > > but forgot to free the 'vdev.reserved_regions' array. Do it in the > instance_finalize() handler. > > Cc: qemu-sta...@nongnu.org > Fixes: 8077b8e549 ("virtio-iommu-pci: Add array of Interval properties") # > v5.1.0+ > Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> Reviewed-by: Eric Auger <eric.au...@redhat.com>
Eric > --- > hw/virtio/virtio-iommu-pci.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c > index 9459fbf6ed..cbdfe4c591 100644 > --- a/hw/virtio/virtio-iommu-pci.c > +++ b/hw/virtio/virtio-iommu-pci.c > @@ -95,10 +95,18 @@ static void virtio_iommu_pci_instance_init(Object *obj) > TYPE_VIRTIO_IOMMU); > } > > +static void virtio_iommu_pci_instance_finalize(Object *obj) > +{ > + VirtIOIOMMUPCI *dev = VIRTIO_IOMMU_PCI(obj); > + > + g_free(dev->vdev.prop_resv_regions); > +} > + > static const VirtioPCIDeviceTypeInfo virtio_iommu_pci_info = { > .generic_name = TYPE_VIRTIO_IOMMU_PCI, > .instance_size = sizeof(VirtIOIOMMUPCI), > .instance_init = virtio_iommu_pci_instance_init, > + .instance_finalize = virtio_iommu_pci_instance_finalize, > .class_init = virtio_iommu_pci_class_init, > }; >