On 12/06/2018 12:44, Gerd Hoffmann wrote: > > When the parent bus removes the child property, it takes care of > removing the added reference, in object_finalize_child_property(). > > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > Message-id: 20180531195119.22021-2-marcandre.lur...@redhat.com > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > hw/core/bus.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/hw/core/bus.c b/hw/core/bus.c > index 4651f24486..ad0c9df335 100644 > --- a/hw/core/bus.c > +++ b/hw/core/bus.c > @@ -102,7 +102,6 @@ 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));
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. So you're introducing a leak. Paolo