pci_bridge: manually destroy memory regions within PCIBridgeWindows
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 <arei.gonglei@huawei.com> Reported-by: Knut Omang <knut.omang@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
288d332202
commit
9f6b2f1c64
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user