qdev: add reference for the bus while it is referred to by the DeviceState

Now that the unparent callbacks are complete, we can correctly account
more missing references.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Paolo Bonzini 2013-01-25 14:12:35 +01:00 committed by Anthony Liguori
parent 06f7f2bb56
commit 62d7ba669d

View File

@ -100,6 +100,7 @@ static void bus_add_child(BusState *bus, DeviceState *child)
void qdev_set_parent_bus(DeviceState *dev, BusState *bus) void qdev_set_parent_bus(DeviceState *dev, BusState *bus)
{ {
dev->parent_bus = bus; dev->parent_bus = bus;
object_ref(OBJECT(bus));
bus_add_child(bus, dev); bus_add_child(bus, dev);
} }
@ -773,6 +774,8 @@ static void device_unparent(Object *obj)
} }
if (dev->parent_bus) { if (dev->parent_bus) {
bus_remove_child(dev->parent_bus, dev); bus_remove_child(dev->parent_bus, dev);
object_unref(OBJECT(dev->parent_bus));
dev->parent_bus = NULL;
} }
} }