* Paolo Bonzini (pbonz...@redhat.com) wrote: > On 15/12/2017 14:30, Dr. David Alan Gilbert wrote: > >> Also it seems that we have a race in current code where > >> region_del() unrefs memory region first and then by the > >> commit time memory region could be gone since old flatview > >> is unreffed before commit callback is called, but guest still > >> uses old memory map until vhost_set_mem_table() is complete. > >> We probably should unref deleted(old) sections after > >> guest gets new memmap. > > > > Will they really get cleaned up before the commit() returns? > > There's no rcu like thing guarding it? > > The memory subsystem only keeps them alive until before commmit() is > invoked.
Hmm ok; I guess then we do need to keep the temporary list of MemoryRegionSections and unref all the old ones after the end of the callback. I'll rework it (again). Dave > Paolo -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK