Revert "bus: do not unref the added child bus on realize"
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Wed, 13 Jun 2018 17:28:15 +0000 (19:28 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 18 Jun 2018 07:15:51 +0000 (09:15 +0200)
This is wrong.  object_finalize_child_property()'s unref balances the
ref in object_property_add_child().  qbus_realize's unref balances the
ref that was initially placed by object_new/object_initialize.

This reverts commit f3d58385a6d3d82f65db602c5506e2d3d8c82394.

Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20180613172815.32738-4-marcandre.lureau@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/core/bus.c

index ad0c9df335fb3597c5dc4f9c0bed8bb67f4148d5..4651f244864c309018ee4d1179e59fca6985e471 100644 (file)
@@ -102,6 +102,7 @@ static void qbus_realize(BusState *bus, DeviceState *parent, const char *name)
         QLIST_INSERT_HEAD(&bus->parent->child_bus, bus, sibling);
         bus->parent->num_child_bus++;
         object_property_add_child(OBJECT(bus->parent), bus->name, OBJECT(bus), NULL);
+        object_unref(OBJECT(bus));
     } else if (bus != sysbus_get_default()) {
         /* TODO: once all bus devices are qdevified,
            only reset handler for main_system_bus should be registered here. */