On 08/06/2015 17:19, Igor Mammedov wrote: > +void qemu_ram_unmap_hva(ram_addr_t addr) > +{ > + RAMBlock *block = find_ram_block(addr); > + > + assert(block); > + mmap(block->host, block->used_length, PROT_NONE, > + MAP_FIXED | MAP_NORESERVE | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); > +} > +
Hmm, this is not good. :( The area at block->host can be in use, for example via memory_region_ref/memory_region_unref. This can happen a bit after the memory_region_del_subregion. So you can SEGV if you simply make a synchronous update. I'm not sure if there is a solution (but thanks for splitting the patches in a way that made the problem clear!). Paolo