The bitmap mutex is used to synchronize threads to update the dirty bitmap and the migration_dirty_pages counter. This patch makes migration_bitmap_clear_dirty update the bitmap and counter under the mutex.
Signed-off-by: Wei Wang <wei.w.w...@intel.com> CC: Dr. David Alan Gilbert <dgilb...@redhat.com> CC: Juan Quintela <quint...@redhat.com> CC: Michael S. Tsirkin <m...@redhat.com> --- migration/ram.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/migration/ram.c b/migration/ram.c index 0e90efa..9a72b1a 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -795,11 +795,14 @@ static inline bool migration_bitmap_clear_dirty(RAMState *rs, { bool ret; + qemu_mutex_lock(&rs->bitmap_mutex); ret = test_and_clear_bit(page, rb->bmap); if (ret) { rs->migration_dirty_pages--; } + qemu_mutex_unlock(&rs->bitmap_mutex); + return ret; } -- 1.8.3.1