From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52098) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XKBNi-0003uq-0k for qemu-devel@nongnu.org; Wed, 20 Aug 2014 15:17:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XKBNd-0002cc-Qq for qemu-devel@nongnu.org; Wed, 20 Aug 2014 15:17:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:28041) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XKBNd-0002cY-KS for qemu-devel@nongnu.org; Wed, 20 Aug 2014 15:17:09 -0400 Date: Wed, 20 Aug 2014 21:17:31 +0200 From: "Michael S. Tsirkin" Message-ID: <20140820191731.GA28370@redhat.com> References: <1408549805-20956-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1408549805-20956-1-git-send-email-pbonzini@redhat.com> Subject: Re: [Qemu-devel] [PATCH] pci_bridge: manually destroy memory regions within PCIBridgeWindows List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: peter.maydell@linaro.org, arei.gonglei@huawei.com, knut.omang@oracle.com, qemu-devel@nongnu.org On Wed, Aug 20, 2014 at 05:50:05PM +0200, Paolo Bonzini wrote: > The regions are destroyed and recreated on configuration space accesses. > We need to destroy them before the containing PCIBridgeWindows object > is freed. > > Reported-by: Gonglei > Reported-by: Knut Omang > Signed-off-by: Paolo Bonzini Regression in 2.1? Cc stable? > --- > hw/pci/pci_bridge.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c > index 1307265..40c97b1 100644 > --- a/hw/pci/pci_bridge.c > +++ b/hw/pci/pci_bridge.c > @@ -219,6 +219,12 @@ static void pci_bridge_region_del(PCIBridge *br, PCIBridgeWindows *w) > > static void pci_bridge_region_cleanup(PCIBridge *br, PCIBridgeWindows *w) > { > + object_unparent(OBJECT(&w->alias_io)); > + object_unparent(OBJECT(&w->alias_mem)); > + object_unparent(OBJECT(&w->alias_pref_mem)); > + object_unparent(OBJECT(&w->alias_vga[QEMU_PCI_VGA_IO_LO])); > + object_unparent(OBJECT(&w->alias_vga[QEMU_PCI_VGA_IO_HI])); > + object_unparent(OBJECT(&w->alias_vga[QEMU_PCI_VGA_MEM])); > g_free(w); > } > > -- > 1.8.3.1