Message ID | 20240617063409.34393-13-clg@redhat.com |
---|---|
State | New |
Headers | show |
Series | vfio: QOMify VFIOContainer | expand |
On 6/17/24 08:34, Cédric Le Goater wrote: > Instead of allocating the container struct, create a QOM object of the > appropriate type. > > Signed-off-by: Cédric Le Goater <clg@redhat.com> > Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Eric > --- > hw/vfio/container.c | 6 +++--- > hw/vfio/iommufd.c | 4 ++-- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/hw/vfio/container.c b/hw/vfio/container.c > index 3ae52530a9b500bd53ec9f9e66c73253d97c9aba..ff3a6831da83c0fe11060cd57918c4d87b10197c 100644 > --- a/hw/vfio/container.c > +++ b/hw/vfio/container.c > @@ -435,7 +435,7 @@ static VFIOContainer *vfio_create_container(int fd, VFIOGroup *group, > vioc_name = vfio_get_iommu_class_name(iommu_type); > vioc = VFIO_IOMMU_CLASS(object_class_by_name(vioc_name)); > > - container = g_malloc0(sizeof(*container)); > + container = VFIO_IOMMU_LEGACY(object_new(vioc_name)); > container->fd = fd; > container->iommu_type = iommu_type; > vfio_container_init(&container->bcontainer, vioc); > @@ -674,7 +674,7 @@ unregister_container_exit: > vfio_cpr_unregister_container(bcontainer); > > free_container_exit: > - g_free(container); > + object_unref(container); > > close_fd_exit: > close(fd); > @@ -718,7 +718,7 @@ static void vfio_disconnect_container(VFIOGroup *group) > trace_vfio_disconnect_container(container->fd); > vfio_cpr_unregister_container(bcontainer); > close(container->fd); > - g_free(container); > + object_unref(container); > > vfio_put_address_space(space); > } > diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c > index 3e9d642034c2d2234ea701952c94a78ab32e9147..d59df858407f3cadb9405386ad673c99cdad61d0 100644 > --- a/hw/vfio/iommufd.c > +++ b/hw/vfio/iommufd.c > @@ -239,7 +239,7 @@ static void iommufd_cdev_container_destroy(VFIOIOMMUFDContainer *container) > memory_listener_unregister(&bcontainer->listener); > vfio_container_destroy(bcontainer); > iommufd_backend_free_id(container->be, container->ioas_id); > - g_free(container); > + object_unref(container); > } > > static int iommufd_cdev_ram_block_discard_disable(bool state) > @@ -352,7 +352,7 @@ static bool iommufd_cdev_attach(const char *name, VFIODevice *vbasedev, > > trace_iommufd_cdev_alloc_ioas(vbasedev->iommufd->fd, ioas_id); > > - container = g_malloc0(sizeof(*container)); > + container = VFIO_IOMMU_IOMMUFD(object_new(TYPE_VFIO_IOMMU_IOMMUFD)); > container->be = vbasedev->iommufd; > container->ioas_id = ioas_id; >
diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 3ae52530a9b500bd53ec9f9e66c73253d97c9aba..ff3a6831da83c0fe11060cd57918c4d87b10197c 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -435,7 +435,7 @@ static VFIOContainer *vfio_create_container(int fd, VFIOGroup *group, vioc_name = vfio_get_iommu_class_name(iommu_type); vioc = VFIO_IOMMU_CLASS(object_class_by_name(vioc_name)); - container = g_malloc0(sizeof(*container)); + container = VFIO_IOMMU_LEGACY(object_new(vioc_name)); container->fd = fd; container->iommu_type = iommu_type; vfio_container_init(&container->bcontainer, vioc); @@ -674,7 +674,7 @@ unregister_container_exit: vfio_cpr_unregister_container(bcontainer); free_container_exit: - g_free(container); + object_unref(container); close_fd_exit: close(fd); @@ -718,7 +718,7 @@ static void vfio_disconnect_container(VFIOGroup *group) trace_vfio_disconnect_container(container->fd); vfio_cpr_unregister_container(bcontainer); close(container->fd); - g_free(container); + object_unref(container); vfio_put_address_space(space); } diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c index 3e9d642034c2d2234ea701952c94a78ab32e9147..d59df858407f3cadb9405386ad673c99cdad61d0 100644 --- a/hw/vfio/iommufd.c +++ b/hw/vfio/iommufd.c @@ -239,7 +239,7 @@ static void iommufd_cdev_container_destroy(VFIOIOMMUFDContainer *container) memory_listener_unregister(&bcontainer->listener); vfio_container_destroy(bcontainer); iommufd_backend_free_id(container->be, container->ioas_id); - g_free(container); + object_unref(container); } static int iommufd_cdev_ram_block_discard_disable(bool state) @@ -352,7 +352,7 @@ static bool iommufd_cdev_attach(const char *name, VFIODevice *vbasedev, trace_iommufd_cdev_alloc_ioas(vbasedev->iommufd->fd, ioas_id); - container = g_malloc0(sizeof(*container)); + container = VFIO_IOMMU_IOMMUFD(object_new(TYPE_VFIO_IOMMU_IOMMUFD)); container->be = vbasedev->iommufd; container->ioas_id = ioas_id;