On Tue, May 10, 2022 at 17:20:46 +0200, Jiri Denemark wrote: > Code executed only when dom != NULL can be moved before "endjob" label, > to the only place where dom is set. > > Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> > --- > src/qemu/qemu_migration.c | 50 ++++++++++++++++++++++----------------- > 1 file changed, 28 insertions(+), 22 deletions(-) > > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c > index 1f6f008ad9..cb17cbd189 100644 > --- a/src/qemu/qemu_migration.c > +++ b/src/qemu/qemu_migration.c > @@ -5844,8 +5844,16 @@ qemuMigrationDstFinish(virQEMUDriver *driver, > > if (flags & VIR_MIGRATE_OFFLINE) { > if (retcode == 0 && > - qemuMigrationDstPersist(driver, vm, mig, false) == 0) > + qemuMigrationDstPersist(driver, vm, mig, false) == 0) { > dom = virGetDomain(dconn, vm->def->name, vm->def->uuid, -1); IMO virGetDomain should be treated as that it can't fail ... > + > + if (dom && ... so this check seems pointless. > + qemuMigrationCookieFormat(mig, driver, vm, > + QEMU_MIGRATION_DESTINATION, > + cookieout, cookieoutlen, > + QEMU_MIGRATION_COOKIE_STATS) < 0) broken alignment > + VIR_WARN("Unable to encode migration cookie"); > + } > goto endjob; > } > > @@ -6008,6 +6016,25 @@ qemuMigrationDstFinish(virQEMUDriver *driver, > /* Guest is successfully running, so cancel previous auto destroy */ > qemuProcessAutoDestroyRemove(driver, vm); > > + if (jobData) { > + priv->job.completed = g_steal_pointer(&jobData); > + priv->job.completed->status = VIR_DOMAIN_JOB_STATUS_COMPLETED; > + qemuDomainJobSetStatsType(priv->job.completed, > + QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION); > + } > + > + if (qemuMigrationCookieFormat(mig, driver, vm, > + QEMU_MIGRATION_DESTINATION, > + cookieout, cookieoutlen, > + QEMU_MIGRATION_COOKIE_STATS) < 0) > + VIR_WARN("Unable to encode migration cookie"); E.g. here you don't check 'dom' because it's not yet allocated. > + > + /* Remove completed stats for post-copy, everything but timing fields > + * is obsolete anyway. > + */ > + if (inPostCopy) > + g_clear_pointer(&priv->job.completed, virDomainJobDataFree); > + > dom = virGetDomain(dconn, vm->def->name, vm->def->uuid, vm->def->id); > > endjob: Reviewed-by: Peter Krempa <pkrempa@xxxxxxxxxx>