Message ID | 20210723193444.133412-10-peterx@redhat.com |
---|---|
State | New |
Headers | show |
Series | memory: Sanity checks memory transaction when releasing BQL | expand |
On 23.07.21 21:34, Peter Xu wrote: > 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 <peterx@redhat.com> > --- > softmmu/memory.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/softmmu/memory.c b/softmmu/memory.c > index 08327c22e2..cf7943c02c 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_pop(); > - 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; > } > - } > + } > + > + /* > + * Pop 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_pop(); > } > > static void memory_region_destructor_none(MemoryRegion *mr) > Sounds sane to me!
diff --git a/softmmu/memory.c b/softmmu/memory.c index 08327c22e2..cf7943c02c 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_pop(); - 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; } - } + } + + /* + * Pop 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_pop(); } static void memory_region_destructor_none(MemoryRegion *mr)
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 <peterx@redhat.com> --- softmmu/memory.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)