From: Jiri Denemark Date: Mon, 23 May 2022 10:27:51 +0000 (+0200) Subject: qemu: Fix error propagation in qemuMigrationBegin X-Git-Tag: v8.4.0-rc1~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c500955e95ed9c10d0d5bba0190d1b496f383a91;p=thirdparty%2Flibvirt.git 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 Reviewed-by: Peter Krempa --- diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 438f2bc999..38596fa4de 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -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)