From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53154) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VGpoY-0007Ln-2i for qemu-devel@nongnu.org; Tue, 03 Sep 2013 08:34:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VGpoP-0006Wn-5e for qemu-devel@nongnu.org; Tue, 03 Sep 2013 08:34:33 -0400 Received: from mail-ea0-x22c.google.com ([2a00:1450:4013:c01::22c]:46977) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VGpoO-0006WV-V4 for qemu-devel@nongnu.org; Tue, 03 Sep 2013 08:34:25 -0400 Received: by mail-ea0-f172.google.com with SMTP id r16so2962838ead.17 for ; Tue, 03 Sep 2013 05:34:24 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Tue, 3 Sep 2013 14:33:17 +0200 Message-Id: <1378211609-16121-27-git-send-email-pbonzini@redhat.com> In-Reply-To: <1378211609-16121-1-git-send-email-pbonzini@redhat.com> References: <1378211609-16121-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 26/38] pci_bridge: reclaim memory in instance_finalize instead of exit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mst@redhat.com Signed-off-by: Paolo Bonzini --- hw/pci-bridge/pci_bridge_dev.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c index 970a5b9..b33dc59 100644 --- a/hw/pci-bridge/pci_bridge_dev.c +++ b/hw/pci-bridge/pci_bridge_dev.c @@ -96,9 +96,15 @@ static void pci_bridge_dev_exitfn(PCIDevice *dev) } slotid_cap_cleanup(dev); shpc_cleanup(dev, &bridge_dev->bar); + pci_bridge_exitfn(dev); +} + +static void pci_bridge_dev_instance_finalize(Object *obj) +{ + PCIDevice *dev = PCI_DEVICE(obj); + PCIBridgeDev *bridge_dev = PCI_BRIDGE_DEV(obj); shpc_free(dev); memory_region_destroy(&bridge_dev->bar); - pci_bridge_exitfn(dev); pci_bridge_free(dev); } @@ -159,6 +165,7 @@ static const TypeInfo pci_bridge_dev_info = { .parent = TYPE_PCI_BRIDGE, .instance_size = sizeof(PCIBridgeDev), .class_init = pci_bridge_dev_class_init, + .instance_finalize = pci_bridge_dev_instance_finalize, }; static void pci_bridge_dev_register(void) -- 1.8.3.1