qemu_savevm_state_complete_precopy() requires that BQL is held. This fixes a crash when running with TCG accel.
Reviewed-by: Peter Xu <[email protected]> Signed-off-by: Lukas Straub <[email protected]> --- migration/colo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/migration/colo.c b/migration/colo.c index dc7cfa81ef7db78e3ee372642de48567c5bc06eb..3297aa593cd9f87bf1013598464cc581a9d23531 100644 --- a/migration/colo.c +++ b/migration/colo.c @@ -455,9 +455,8 @@ static int colo_do_checkpoint_transaction(MigrationState *s, /* Note: device state is saved into buffer */ ret = qemu_save_device_state(fb, &local_err); - - bql_unlock(); if (ret < 0) { + bql_unlock(); goto out; } @@ -471,6 +470,7 @@ static int colo_do_checkpoint_transaction(MigrationState *s, */ qemu_savevm_state_complete_precopy_iterable(s->to_dst_file, false); qemu_savevm_state_end(s->to_dst_file); + bql_unlock(); /* * We need the size of the VMstate data in Secondary side, -- 2.39.5
