qemu: Fix error propagation in qemuMigrationBegin

Commit v8.3.0-152-g49ef0f95c6 removed explicit VIR_FREE from
qemuMigrationBegin, effectively reverting v1.2.14-57-g77ddd0bba2

The xml variable was used to hold the return value and thus had to be
unset when an error happened after xml was already non-NULL. Such code
may be quite confusing though and we usually avoid it by not storing
anything to a return variable until everything succeeded.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Jiri Denemark 2022-05-23 12:27:51 +02:00
parent 42cb548045
commit c500955e95

View File

@ -2487,6 +2487,7 @@ qemuMigrationSrcBegin(virConnectPtr conn,
virQEMUDriver *driver = conn->privateData;
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autofree char *xml = NULL;
char *ret = NULL;
virDomainAsyncJob asyncJob;
if (cfg->migrateTLSForce &&
@ -2538,9 +2539,11 @@ qemuMigrationSrcBegin(virConnectPtr conn,
goto endjob;
}
ret = g_steal_pointer(&xml);
cleanup:
virDomainObjEndAPI(&vm);
return g_steal_pointer(&xml);
return ret;
endjob:
if (flags & VIR_MIGRATE_CHANGE_PROTECTION)