Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> --- hw/virtio/virtio-pci.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 9512590c936..a33d1b2cbcf 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -2475,13 +2475,16 @@ void virtio_pci_types_register(const VirtioPCIDeviceTypeInfo *t) g_autofree char *base_name = single_generic_device ? g_strconcat(t->generic_name, "-base-type", NULL) : NULL; - TypeInfo base_type_info = { + const TypeInfo base_type_info = { .name = t->base_name ?: base_name, .parent = t->parent ? t->parent : TYPE_VIRTIO_PCI, .instance_size = t->instance_size, .instance_init = t->instance_init, .instance_finalize = t->instance_finalize, .class_size = t->class_size, + .class_init = t->base_name ? virtio_pci_base_class_init + : virtio_pci_generic_class_init, + .class_data = t->base_name ? t : NULL, .abstract = true, .interfaces = t->interfaces, }; @@ -2499,18 +2502,14 @@ void virtio_pci_types_register(const VirtioPCIDeviceTypeInfo *t) assert(t->base_name || !t->non_transitional_name); assert(t->base_name || !t->transitional_name); - if (!t->base_name) { - base_type_info.class_init = virtio_pci_generic_class_init; + type_register_static(&base_type_info); + if (!t->base_name) { generic_type_info.parent = base_name; generic_type_info.class_init = virtio_pci_base_class_init; generic_type_info.class_data = t; - } else { - base_type_info.class_init = virtio_pci_base_class_init; - base_type_info.class_data = t; } - type_register_static(&base_type_info); if (generic_type_info.name) { type_register_static(&generic_type_info); } -- 2.47.1