On 20/05/20 16:42, Markus Armbruster wrote: > If something goes > wrong there, we execute > > fail: > error_propagate(errp, local_err); > if (unattached_parent) { > /* > * Beware, this doesn't just revert > * object_property_add_child(), it also runs bus_remove()! > */ > object_unparent(OBJECT(dev)); > unattached_count--; > } > > and bus_remove() drops the reference count to zero.
Whoa whoa... I didn't expect this from a failure to realize. I think we should move the whole /machine/unattached dance into qdev_realize, and just assert that a device being realized already has a parent. Then the ref/unref _will_ be unnecessary. In the meanwhile, I agree to either keep it or move it inside device_set_realized. Thanks, Paolo