On Thu, 16 Feb 2017 14:18:05 +0000 Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 16 February 2017 at 13:57, Igor Mammedov <imamm...@redhat.com> wrote: > > object_new(FOO) returns an object with ref_cnt == 1 > > and following > > object_property_set_bool(cpuobj, true, "realized", NULL) > > set parent of cpuobj to '/machine/unattached' which makes > > ref_cnt == 2. > > > > Since machvirt_init() doesn't take ownership of cpuobj > > returned by object_new() it should explicitly drop > > reference to cpuobj when dangling pointer is about to > > go out of scope like it's done pc_new_cpu() to avoid > > object leak. > > I've always found the object reference semantics somewhat > confusing (why does realizing a device add a reference, > for instance?). Do we document them anywhere? I'm not aware of a place where it's documented. currently device_realize() sets parent thus increasing ref counter only if device creator haven't set parent explicitly. > > thanks > -- PMM >