hw/pci-bridge: Fix invalid free()
When loadvm'ing a *running* snapshot qemu crashes due to an invalid free. It's fortunately caught early by glibc heap memory corruption protection and qemu gets killed with SIGABRT. Steps to reproduce: 1) Create VM (e.g w/ virsh define) 2) Start the VM and take a snapshot while it's running and having a PCI bridge attached 3) Destroy the VM and revert the running snapshot. This commit fixes the issue. Signed-off-by: Matthias Weckbecker <matthias@weckbecker.name> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
a2eb5c0cf7
commit
e7176cdbe4
|
@ -241,9 +241,9 @@ void pci_bridge_update_mappings(PCIBridge *br)
|
||||||
* while another accesses an unaffected region. */
|
* while another accesses an unaffected region. */
|
||||||
memory_region_transaction_begin();
|
memory_region_transaction_begin();
|
||||||
pci_bridge_region_del(br, br->windows);
|
pci_bridge_region_del(br, br->windows);
|
||||||
|
pci_bridge_region_cleanup(br, w);
|
||||||
br->windows = pci_bridge_region_init(br);
|
br->windows = pci_bridge_region_init(br);
|
||||||
memory_region_transaction_commit();
|
memory_region_transaction_commit();
|
||||||
pci_bridge_region_cleanup(br, w);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* default write_config function for PCI-to-PCI bridge */
|
/* default write_config function for PCI-to-PCI bridge */
|
||||||
|
|
Loading…
Reference in a new issue