]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
net/colo-compare.c: Fix a crash in COLO Primary.
authorLukas Straub <lukasstraub2@web.de>
Sat, 20 Apr 2019 17:14:25 +0000 (19:14 +0200)
committerJason Wang <jasowang@redhat.com>
Fri, 17 May 2019 09:00:12 +0000 (17:00 +0800)
Because event_unhandled_count may be accessed concurrently, it needs
to be protected by taking the lock. However the assert is outside the
lock, probably causing it to read garbage and aborting Qemu erroneously.

The Bug only happens when running Qemu in COLO mode.

This Patch fixes the following bug: https://bugs.launchpad.net/qemu/+bug/1824622

Signed-off-by: Lukas Straub <lukasstraub2@web.de>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Zhang Chen <chen.zhang@intel.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
net/colo-compare.c

index bf10526f054bea922dee910b40ee8f1aa2de8df0..fcb491121b30f2ccd3e4517a1cc830bcb5bdd04c 100644 (file)
@@ -813,9 +813,8 @@ static void colo_compare_handle_event(void *opaque)
         break;
     }
 
-    assert(event_unhandled_count > 0);
-
     qemu_mutex_lock(&event_mtx);
+    assert(event_unhandled_count > 0);
     event_unhandled_count--;
     qemu_cond_broadcast(&event_complete_cond);
     qemu_mutex_unlock(&event_mtx);