From 60b3fcd90cbd83e5721484d72414dfee1706dab8 Mon Sep 17 00:00:00 2001 From: Jim Fehlig Date: Tue, 13 Mar 2018 10:48:28 -0600 Subject: [PATCH] libxl: MigratePrepare: use standard begin and end API pattern libxlDomainMigrationPrepare adds the incoming domain def to the list of domains via virDomainObjListAdd, but never adds its own ref to the returned virDomainObj as other callers of virDomainObjListAdd do. libxlDomainMigrationPrepareTunnel3 suffers the same discrepancy. Change both to add a ref to the virDomainObj after a successful virDomainObjListAdd, similar to other callers. This ensures a consistent pattern throughout the drivers and allows using the virDomainObjEndAPI function for cleanup. Signed-off-by: Jim Fehlig Reviewed-by: John Ferlan --- src/libxl/libxl_migration.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c index 42a84bd358..7dc39ae025 100644 --- a/src/libxl/libxl_migration.c +++ b/src/libxl/libxl_migration.c @@ -583,6 +583,7 @@ libxlDomainMigrationPrepareTunnel3(virConnectPtr dconn, NULL))) goto error; + virObjectRef(vm); *def = NULL; priv = vm->privateData; @@ -635,13 +636,11 @@ libxlDomainMigrationPrepareTunnel3(virConnectPtr dconn, /* Remove virDomainObj from domain list */ if (vm) { virDomainObjListRemove(driver->domains, vm); - vm = NULL; + virObjectLock(vm); } done: - if (vm) - virObjectUnlock(vm); - + virDomainObjEndAPI(&vm); return ret; } @@ -683,6 +682,7 @@ libxlDomainMigrationPrepare(virConnectPtr dconn, NULL))) goto error; + virObjectRef(vm); *def = NULL; priv = vm->privateData; @@ -810,7 +810,7 @@ libxlDomainMigrationPrepare(virConnectPtr dconn, /* Remove virDomainObj from domain list */ if (vm) { virDomainObjListRemove(driver->domains, vm); - vm = NULL; + virObjectLock(vm); } done: @@ -820,8 +820,7 @@ libxlDomainMigrationPrepare(virConnectPtr dconn, VIR_FREE(hostname); else virURIFree(uri); - if (vm) - virObjectUnlock(vm); + virDomainObjEndAPI(&vm); virObjectUnref(cfg); return ret; } -- GitLab