In the memory_region_do_invalidate_mmio_ptr() routine the section variable is intialized by the memory_region_find() call. The section.mr field can be set to NULL.
Add the check for NULL before trying to drop a section. Signed-off-by: Dima Stepanov <dimas...@yandex-team.ru> --- memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memory.c b/memory.c index 3212acc..bb45248 100644 --- a/memory.c +++ b/memory.c @@ -2712,7 +2712,7 @@ static void memory_region_do_invalidate_mmio_ptr(CPUState *cpu, /* Reset dirty so this doesn't happen later. */ cpu_physical_memory_test_and_clear_dirty(offset, size, 1); - if (section.mr != mr) { + if (section.mr && (section.mr != mr)) { /* memory_region_find add a ref on section.mr */ memory_region_unref(section.mr); if (MMIO_INTERFACE(section.mr->owner)) { -- 2.7.4