On 02/12/2015 08:59, Gonglei (Arei) wrote:
>>>> static void phys_section_destroy(MemoryRegion *mr) {
>>>> + bool have_sub_page = mr->subpage;
>>>> +
>>>> memory_region_unref(mr);
>>>>
>>>> - if (mr->subpage) {
>>>> + if (have_sub_page) {
>>>> subpage_t *subpage = container_of(mr, subpage_t, iomem);
>
> Can we use the *mr* here again?
Yes, in the subpage case the memory is allocated by exec.c. Accessing
mr->subpage is only problematic if memory_region_unref destroys a device.
> IMO we should invoke memory_region_unref(mr) after the if check.
That's also possible.
Paolo