mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 16:53:55 -06:00
memory: add ref/unref calls
Add ref/unref calls at the following places: - places where memory regions are stashed by a listener and used outside the BQL (including in Xen or KVM). - memory_region_find callsites - creation of aliases and containers (only the aliased/contained region gets a reference to avoid loops) - around calls to del_subregion/add_subregion, where the region could disappear after the first call Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3ce10901ca
commit
dfde4e6e1a
16 changed files with 63 additions and 5 deletions
|
@ -497,6 +497,7 @@ static void vhost_region_add(MemoryListener *listener,
|
|||
dev->mem_sections = g_renew(MemoryRegionSection, dev->mem_sections,
|
||||
dev->n_mem_sections);
|
||||
dev->mem_sections[dev->n_mem_sections - 1] = *section;
|
||||
memory_region_ref(section->mr);
|
||||
vhost_set_memory(listener, section, true);
|
||||
}
|
||||
|
||||
|
@ -512,6 +513,7 @@ static void vhost_region_del(MemoryListener *listener,
|
|||
}
|
||||
|
||||
vhost_set_memory(listener, section, false);
|
||||
memory_region_unref(section->mr);
|
||||
for (i = 0; i < dev->n_mem_sections; ++i) {
|
||||
if (dev->mem_sections[i].offset_within_address_space
|
||||
== section->offset_within_address_space) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue