This should be functionally the same as before, but this allows the memory_region_transaction_depth to be non-zero during commit, which can help us to do sanity check on misuses.
Since at it, fix an indentation issue on the bracket. Signed-off-by: Peter Xu <pet...@redhat.com> --- softmmu/memory.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/softmmu/memory.c b/softmmu/memory.c index 62ec00b52d..e830649011 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -1114,8 +1114,7 @@ void memory_region_transaction_commit(void) assert(memory_region_transaction_depth); assert(qemu_mutex_iothread_locked()); - memory_region_transaction_depth_dec(); - if (!memory_region_transaction_depth) { + if (memory_region_transaction_depth == 1) { if (memory_region_update_pending) { flatviews_reset(); @@ -1134,7 +1133,14 @@ void memory_region_transaction_commit(void) } ioeventfd_update_pending = false; } - } + } + + /* + * Decrease the depth at last, so that memory_region_transaction_depth will + * still be non-zero during committing. This can help us to do some sanity + * check within the process of committing. + */ + memory_region_transaction_depth_dec(); } static void memory_region_destructor_none(MemoryRegion *mr) -- 2.31.1