Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- 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