Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- hw/pci-bridge/pci_bridge_dev.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c index c1aab15..3f06e56 100644 --- a/hw/pci-bridge/pci_bridge_dev.c +++ b/hw/pci-bridge/pci_bridge_dev.c @@ -90,9 +90,16 @@ 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); + PCIBridge *br = DO_UPCAST(PCIBridge, dev, dev); + PCIBridgeDev *bridge_dev = DO_UPCAST(PCIBridgeDev, bridge, br); shpc_free(dev); memory_region_destroy(&bridge_dev->bar); - pci_bridge_exitfn(dev); pci_bridge_free(dev); } @@ -152,6 +159,7 @@ static const TypeInfo pci_bridge_dev_info = { .parent = TYPE_PCI_DEVICE, .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.1.4