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