summaryrefslogtreecommitdiffstats
path: root/hw/core/bus.c
diff options
context:
space:
mode:
authorMarc-André Lureau2018-06-13 19:28:15 +0200
committerGerd Hoffmann2018-06-18 09:15:51 +0200
commit0d1e8d6f4a2ced75f673edfe4d6cb78f3b361144 (patch)
treeb2b2920adfe91b96ff88a4de8182cc19d8ade5ba /hw/core/bus.c
parentRevert "usb: release the created buses" (diff)
downloadqemu-0d1e8d6f4a2ced75f673edfe4d6cb78f3b361144.tar.gz
qemu-0d1e8d6f4a2ced75f673edfe4d6cb78f3b361144.tar.xz
qemu-0d1e8d6f4a2ced75f673edfe4d6cb78f3b361144.zip
Revert "bus: do not unref the added child bus on realize"
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>
Diffstat (limited to 'hw/core/bus.c')
-rw-r--r--hw/core/bus.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/core/bus.c b/hw/core/bus.c
index ad0c9df335..4651f24486 100644
--- a/hw/core/bus.c
+++ b/hw/core/bus.c
@@ -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. */