|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] weird qdev error |
Date: | Sun, 12 Feb 2012 14:04:29 -0600 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15 |
On 02/12/2012 11:57 AM, Michael S. Tsirkin wrote:
On Sun, Feb 12, 2012 at 11:38:24AM -0600, Anthony Liguori wrote:From: Anthony Liguori<address@hidden> Date: Sun, 12 Feb 2012 11:36:24 -0600 Subject: [PATCH] device_add: don't add a /peripheral link until init is complete Otherwise we end up with a dangling reference which causes qdev_free() to fail. Reported-by: Michael Tsirkin<address@hidden> Signed-off-by: Anthony Liguori<address@hidden>This handles the option parsing but what about hotplug failures (when bus->hotplug returns an error)?
Sorry, I don't follow.The assert you reported was that object_free() noted a reference count of !0 which indicates something else was holding the reference to the object. In this case, it was the child link in /peripheral.
By delaying creating the link in /peripheral, we eliminate the problem completely.BTW, the explicit calls to do_pci_unregister are redundant. finalize() will be called during cleanup which means exit() will be invoked (which already calls do_pci_unregister). I'm not sure why this isn't failing more aggressively but it looks clearly wrong to me.
Regards, Anthony Liguori
[Prev in Thread] | Current Thread | [Next in Thread] |