Message ID | 20211005080751.3797161-3-eesposit@redhat.com |
---|---|
State | New |
Headers | show |
Series | Migration: fix missing iothread locking | expand |
* Emanuele Giuseppe Esposito (eesposit@redhat.com) wrote: > qemu_savevm_state_complete_postcopy assumes the iothread lock (BQL) > to be held, but instead it isn't. > > Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Interesting, I think you're right - and I think it's been missing it from the start. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > migration/migration.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/migration/migration.c b/migration/migration.c > index 041b8451a6..215d5281f2 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -3182,7 +3182,10 @@ static void migration_completion(MigrationState *s) > } else if (s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE) { > trace_migration_completion_postcopy_end(); > > + qemu_mutex_lock_iothread(); > qemu_savevm_state_complete_postcopy(s->to_dst_file); > + qemu_mutex_unlock_iothread(); > + > trace_migration_completion_postcopy_end_after_complete(); > } else if (s->state == MIGRATION_STATUS_CANCELLING) { > goto fail; > -- > 2.27.0 >
diff --git a/migration/migration.c b/migration/migration.c index 041b8451a6..215d5281f2 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3182,7 +3182,10 @@ static void migration_completion(MigrationState *s) } else if (s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE) { trace_migration_completion_postcopy_end(); + qemu_mutex_lock_iothread(); qemu_savevm_state_complete_postcopy(s->to_dst_file); + qemu_mutex_unlock_iothread(); + trace_migration_completion_postcopy_end_after_complete(); } else if (s->state == MIGRATION_STATUS_CANCELLING) { goto fail;
qemu_savevm_state_complete_postcopy assumes the iothread lock (BQL) to be held, but instead it isn't. Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> --- migration/migration.c | 3 +++ 1 file changed, 3 insertions(+)