On Fri, 9 Jan 2026 at 18:11, Fabiano Rosas <[email protected]> wrote: > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -1811,8 +1811,8 @@ int migrate_init(MigrationState *s, Error **errp) > s->setup_time = 0; > s->start_postcopy = false; > s->migration_thread_running = false; > - error_free(s->error); > - s->error = NULL; > + > + migrate_error_free(s); > > if (should_send_vmdesc()) { > s->vmdesc = json_writer_new(false); > @@ -2087,6 +2087,13 @@ static bool migrate_prepare(MigrationState *s, bool > resume, Error **errp) > migrate_set_state(&s->state, MIGRATION_STATUS_POSTCOPY_PAUSED, > MIGRATION_STATUS_POSTCOPY_RECOVER_SETUP); > > + /* > + * If there's a previous error, free it and prepare for > + * another one. For the non-resume case, this happens at > + * migrate_init() below. > + */ > + migrate_error_free(s); > + > /* This is a resume, skip init status */ > return true; > } > @@ -4015,13 +4022,6 @@ void migration_connect(MigrationState *s, Error > *error_in) > bool resume = (s->state == MIGRATION_STATUS_POSTCOPY_RECOVER_SETUP); > int ret; > > - /* > - * If there's a previous error, free it and prepare for another one. > - * Meanwhile if migration completes successfully, there won't have an > error > - * dumped when calling migration_cleanup(). > - */ > - migrate_error_free(s); > - > s->expected_downtime = migrate_downtime_limit(); > if (error_in) { > migration_connect_error_propagate(s, error_in);
* Looks okay. Reviewed-by: Prasad Pandit <[email protected]> Thank you. --- - Prasad
