From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59128) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1akCNs-0000CA-RL for qemu-devel@nongnu.org; Sun, 27 Mar 2016 11:13:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1akCNo-0005Kv-7d for qemu-devel@nongnu.org; Sun, 27 Mar 2016 11:13:44 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49663) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1akCNo-0005Kr-1v for qemu-devel@nongnu.org; Sun, 27 Mar 2016 11:13:40 -0400 References: <1458717980-26686-1-git-send-email-weijg.fnst@cn.fujitsu.com> <1458717980-26686-2-git-send-email-weijg.fnst@cn.fujitsu.com> From: Marcel Apfelbaum Message-ID: <56F7F89D.4090609@redhat.com> Date: Sun, 27 Mar 2016 18:13:33 +0300 MIME-Version: 1.0 In-Reply-To: <1458717980-26686-2-git-send-email-weijg.fnst@cn.fujitsu.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 1/2] hw/pci-bridge: Add missing unref in case register-bus fails List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wei Jiangang , qemu-devel@nongnu.org Cc: Cao jin , armbru@redhat.com On 03/23/2016 09:26 AM, Wei Jiangang wrote: > The error paths after a successful qdev_create/pci_bus_new > should contain a object_unref/object_unparent. > pxb_dev_init_common() did not yet, so add it. > > Signed-off-by: Wei Jiangang > Signed-off-by: Cao jin > --- > hw/pci-bridge/pci_expander_bridge.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/hw/pci-bridge/pci_expander_bridge.c b/hw/pci-bridge/pci_expander_bridge.c > index 5e7e546..ba320bd 100644 > --- a/hw/pci-bridge/pci_expander_bridge.c > +++ b/hw/pci-bridge/pci_expander_bridge.c > @@ -249,7 +249,7 @@ static int pxb_dev_init_common(PCIDevice *dev, bool pcie) > PCI_HOST_BRIDGE(ds)->bus = bus; > > if (pxb_register_bus(dev, bus)) { > - return -EINVAL; > + goto err_register_bus; > } > > qdev_init_nofail(ds); > @@ -263,6 +263,12 @@ static int pxb_dev_init_common(PCIDevice *dev, bool pcie) > > pxb_dev_list = g_list_insert_sorted(pxb_dev_list, pxb, pxb_compare); > return 0; > + > +err_register_bus: > + object_unref(OBJECT(bds)); > + object_unparent(OBJECT(bus)); > + object_unref(OBJECT(ds)); > + return -EINVAL; > } > > static int pxb_dev_initfn(PCIDevice *dev) > Reviewed-by: Marcel Apfelbaum Thanks, Marcel