On 9 November 2015 at 10:55, Paolo Bonzini <pbonz...@redhat.com> wrote: > > > On 05/11/2015 19:15, Peter Maydell wrote: >> +AddressSpace *address_space_init_shareable(MemoryRegion *root, const char >> *name) >> +{ >> + AddressSpace *as; >> + >> + QTAILQ_FOREACH(as, &address_spaces, address_spaces_link) { >> + if (root == as->root) { >> + as->ref_count++; >> + return as; >> + } >> + } >> + >> + as = g_malloc0(sizeof *as); >> + address_space_init(as, root, name); >> + as->malloced = true; >> + return as; >> } > > You shouldn't return a non-shareable address space here, I think, > because it might be contained into another object and that object might > disappear. I haven't thought this through very much, but adding an " && > as->malloced" to the conditional seems easy and safe.
That would prevent sharing the system address space, which is one you really commonly want to share. I guess we could make that one be alloced-shareable. thanks -- PMM