[libvirt] [PATCH v3 00/10] use VIR_AUTO*/g_auto* all around qemu_driver.c

changes from v2: - rebased with newer master (67e72053c1) - added an extra patch to convert the existing VIR_AUTO* macros to g_auto* ones, all at once, to avoid the case where a method will have both VIR_AUTO* and g_auto* macros at the same time. Note: the conversion in patch 10 wasn't 100% due to a handful of methods that I was unable to use g_autoptr. Take for example the method qemuDomainSaveInternal: -- qemuDomainObjPrivatePtr priv = vm->privateData; VIR_AUTOUNREF(virCapsPtr) caps = NULL; virQEMUSaveDataPtr data = NULL; VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; -- Changing the 'cookie' variable to use g_autoptr() causes an error: make[3]: Entering directory '/home/danielhb/kvm-project/libvirt/src' CC qemu/libvirt_driver_qemu_impl_la-qemu_driver.lo In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from ./internal.h:31, from qemu/qemu_agent.h:24, from qemu/qemu_driver.c:40: qemu/qemu_driver.c: In function 'qemuDomainSaveInternal': qemu/qemu_driver.c:3282:15: error: unknown type name 'qemuDomainSaveCookie_autoptr' 3282 | g_autoptr(qemuDomainSaveCookie) cookie = NULL; I tried doing it with the 'Ptr' in the name, same error: CC qemu/libvirt_driver_qemu_impl_la-qemu_driver.lo In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from ./internal.h:31, from qemu/qemu_agent.h:24, from qemu/qemu_driver.c:40: qemu/qemu_driver.c: In function 'qemuDomainSaveInternal': qemu/qemu_driver.c:3282:15: error: unknown type name 'qemuDomainSaveCookiePtr_autoptr' 3282 | g_autoptr(qemuDomainSaveCookiePtr) cookie = NULL; Similar situation happens with qemuDomainSaveImageStartVM and with qemuSecurityInit methods. They are mentioned in the commit message of patch 10 for reference. These methods are still using VIR_AUTO* macros. changes from v1: - addressed review concerns made by Erik - added more cleanups, as suggested by Erik v2: https://www.redhat.com/archives/libvir-list/2019-September/msg01452.html v1: https://www.redhat.com/archives/libvir-list/2019-September/msg00719.html Daniel Henrique Barboza (10): qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 1/3 qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 2/3 qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 3/3 qemu_driver: use VIR_AUTOUNREF() with virCapsPtr qemu_driver: use VIR_AUTOUNREF() with more pointer types qemu_driver: use VIR_AUTOFREE() with strings 1/3 qemu_driver: use VIR_AUTOFREE() with strings 2/3 qemu_driver: use VIR_AUTOFREE() with strings 3/3 qemu_driver: VIR_AUTOFREE on other scalar pointers qemu_driver.c: use GLib macros src/qemu/qemu_driver.c | 755 ++++++++++++++--------------------------- 1 file changed, 259 insertions(+), 496 deletions(-) -- 2.21.0

virQEMUDriverConfigPtr can be auto-unref for the great majority of the uses made in qemu_driver, sparing us a virObjectUnref() call and sometimes a whole 'cleanup' label. This patch changes virQEMUDriverConfigPtr declarations to use VIR_AUTOUNREF(). 'cleanup' labels were deleted when applicable. Since there are a lot of references to change, let's do it in 3 steps. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 94 +++++++++++++----------------------------- 1 file changed, 29 insertions(+), 65 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 6ce6348593..1bd9609761 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -202,7 +202,7 @@ qemuAutostartDomain(virDomainObjPtr vm, { virQEMUDriverPtr driver = opaque; int flags = 0; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); int ret = -1; if (cfg->autoStartBypassCache) @@ -234,7 +234,6 @@ qemuAutostartDomain(virDomainObjPtr vm, ret = 0; cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -308,7 +307,7 @@ qemuSecurityInit(virQEMUDriverPtr driver) char **names; virSecurityManagerPtr mgr = NULL; virSecurityManagerPtr stack = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); unsigned int flags = 0; if (cfg->securityDefaultConfined) @@ -368,7 +367,6 @@ qemuSecurityInit(virQEMUDriverPtr driver) } driver->securityManager = stack; - virObjectUnref(cfg); return 0; error: @@ -376,7 +374,6 @@ qemuSecurityInit(virQEMUDriverPtr driver) _("Failed to initialize security drivers")); virObjectUnref(stack); virObjectUnref(mgr); - virObjectUnref(cfg); return -1; } @@ -1074,7 +1071,7 @@ static void qemuNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque) static int qemuStateReload(void) { - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCapsPtr caps = NULL; if (!qemu_driver) @@ -1090,7 +1087,6 @@ qemuStateReload(void) caps, qemu_driver->xmlopt, qemuNotifyLoadDomain, qemu_driver); cleanup: - virObjectUnref(cfg); virObjectUnref(caps); return 0; } @@ -1112,7 +1108,7 @@ qemuStateStop(void) int state; virDomainPtr *domains = NULL; unsigned int *flags = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(qemu_driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(qemu_driver); if (!(conn = virConnectOpen(cfg->uri))) goto cleanup; @@ -1151,7 +1147,6 @@ qemuStateStop(void) } VIR_FREE(flags); virObjectUnref(conn); - virObjectUnref(cfg); return ret; } @@ -1209,20 +1204,16 @@ qemuStateCleanup(void) static int qemuConnectURIProbe(char **uri) { - virQEMUDriverConfigPtr cfg = NULL; - int ret = -1; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; if (qemu_driver == NULL) return 0; cfg = virQEMUDriverGetConfig(qemu_driver); if (VIR_STRDUP(*uri, cfg->uri) < 0) - goto cleanup; + return -1; - ret = 0; - cleanup: - virObjectUnref(cfg); - return ret; + return 0; } static virDrvOpenStatus qemuConnectOpen(virConnectPtr conn, @@ -1887,7 +1878,7 @@ static int qemuDomainSuspend(virDomainPtr dom) qemuDomainObjPrivatePtr priv; virDomainPausedReason reason; int state; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; if (!(vm = qemuDomainObjFromDomain(dom))) return -1; @@ -1930,7 +1921,6 @@ static int qemuDomainSuspend(virDomainPtr dom) cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -1942,7 +1932,7 @@ static int qemuDomainResume(virDomainPtr dom) int ret = -1; int state; int reason; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; if (!(vm = qemuDomainObjFromDomain(dom))) return -1; @@ -1988,7 +1978,6 @@ static int qemuDomainResume(virDomainPtr dom) cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -2369,7 +2358,7 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem, virDomainDefPtr def; virDomainDefPtr persistentDef; int ret = -1, r; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG | @@ -2474,7 +2463,6 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -2497,7 +2485,7 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPtr dom, int period, virDomainDefPtr def; virDomainDefPtr persistentDef; int ret = -1, r; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -2560,7 +2548,6 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPtr dom, int period, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -3072,27 +3059,21 @@ qemuOpenFile(virQEMUDriverPtr driver, int oflags, bool *needUnlink) { - int ret = -1; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); uid_t user = cfg->user; gid_t group = cfg->group; bool dynamicOwnership = cfg->dynamicOwnership; virSecurityLabelDefPtr seclabel; - virObjectUnref(cfg); - /* TODO: Take imagelabel into account? */ if (vm && (seclabel = virDomainDefGetSecurityLabelDef(vm->def, "dac")) != NULL && seclabel->label != NULL && (virParseOwnershipIds(seclabel->label, &user, &group) < 0)) - goto cleanup; - - ret = qemuOpenFileAs(user, group, dynamicOwnership, - path, oflags, needUnlink); + return -1; - cleanup: - return ret; + return qemuOpenFileAs(user, group, dynamicOwnership, + path, oflags, needUnlink); } static int @@ -3257,7 +3238,7 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, unsigned int flags, qemuDomainAsyncJob asyncJob) { - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); bool needUnlink = false; int ret = -1; int fd = -1; @@ -3320,7 +3301,6 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, if (qemuFileWrapperFDClose(vm, wrapperFd) < 0) ret = -1; virFileWrapperFdFree(wrapperFd); - virObjectUnref(cfg); if (ret < 0 && needUnlink) unlink(path); @@ -3548,7 +3528,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, char *compressedpath = NULL; int ret = -1; virDomainObjPtr vm = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | VIR_DOMAIN_SAVE_RUNNING | @@ -3575,7 +3555,6 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, cleanup: virDomainObjEndAPI(&vm); VIR_FREE(compressedpath); - virObjectUnref(cfg); return ret; } @@ -3589,14 +3568,11 @@ static char * qemuDomainManagedSavePath(virQEMUDriverPtr driver, virDomainObjPtr vm) { char *ret; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - if (virAsprintf(&ret, "%s/%s.save", cfg->saveDir, vm->def->name) < 0) { - virObjectUnref(cfg); + if (virAsprintf(&ret, "%s/%s.save", cfg->saveDir, vm->def->name) < 0) return NULL; - } - virObjectUnref(cfg); return ret; } @@ -3604,7 +3580,7 @@ static int qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; int compressed; char *compressedpath = NULL; virDomainObjPtr vm; @@ -3650,7 +3626,6 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) virDomainObjEndAPI(&vm); VIR_FREE(name); VIR_FREE(compressedpath); - virObjectUnref(cfg); return ret; } @@ -3848,7 +3823,7 @@ doCoreDump(virQEMUDriverPtr driver, int directFlag = 0; unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING; const char *memory_dump_format = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); char *compressedpath = NULL; /* We reuse "save" flag for "dump" here. Then, we can support the same @@ -3930,7 +3905,6 @@ doCoreDump(virQEMUDriverPtr driver, if (ret != 0) unlink(path); VIR_FREE(compressedpath); - virObjectUnref(cfg); return ret; } @@ -4062,7 +4036,7 @@ qemuDomainScreenshot(virDomainPtr dom, const char *videoAlias = NULL; char *ret = NULL; bool unlink_tmp = false; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(0, NULL); @@ -4154,7 +4128,6 @@ qemuDomainScreenshot(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -4167,7 +4140,7 @@ getAutoDumpPath(virQEMUDriverPtr driver, char timestr[100]; struct tm time_info; time_t curtime = time(NULL); - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; if (!domname) return NULL; @@ -4182,7 +4155,6 @@ getAutoDumpPath(virQEMUDriverPtr driver, domname, timestr)); - virObjectUnref(cfg); VIR_FREE(domname); return dumpfile; } @@ -4193,7 +4165,7 @@ processWatchdogEvent(virQEMUDriverPtr driver, int action) { int ret; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); char *dumpfile = getAutoDumpPath(driver, vm); unsigned int flags = VIR_DUMP_MEMORY_ONLY; @@ -4234,7 +4206,6 @@ processWatchdogEvent(virQEMUDriverPtr driver, qemuDomainObjEndAsyncJob(driver, vm); cleanup: - virObjectUnref(cfg); VIR_FREE(dumpfile); } @@ -4244,7 +4215,7 @@ doCoreDumpToAutoDumpPath(virQEMUDriverPtr driver, unsigned int flags) { int ret = -1; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); char *dumpfile = getAutoDumpPath(driver, vm); if (!dumpfile) @@ -4257,7 +4228,6 @@ doCoreDumpToAutoDumpPath(virQEMUDriverPtr driver, "%s", _("Dump failed")); cleanup: VIR_FREE(dumpfile); - virObjectUnref(cfg); return ret; } @@ -4286,13 +4256,13 @@ processGuestPanicEvent(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virObjectEventPtr event = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); bool removeInactive = false; unsigned long flags = VIR_DUMP_MEMORY_ONLY; if (qemuDomainObjBeginAsyncJob(driver, vm, QEMU_ASYNC_JOB_DUMP, VIR_DOMAIN_JOB_OPERATION_DUMP, flags) < 0) - goto cleanup; + return; if (!virDomainObjIsActive(vm)) { VIR_DEBUG("Ignoring GUEST_PANICKED event from inactive domain %s", @@ -4359,9 +4329,6 @@ processGuestPanicEvent(virQEMUDriverPtr driver, qemuDomainObjEndAsyncJob(driver, vm); if (removeInactive) qemuDomainRemoveInactiveJob(driver, vm); - - cleanup: - virObjectUnref(cfg); } @@ -4370,14 +4337,14 @@ processDeviceDeletedEvent(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *devAlias) { - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virDomainDeviceDef dev; VIR_DEBUG("Removing device %s from domain %p %s", devAlias, vm, vm->def->name); if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; + return; if (!virDomainObjIsActive(vm)) { VIR_DEBUG("Domain is not running"); @@ -4400,9 +4367,6 @@ processDeviceDeletedEvent(virQEMUDriverPtr driver, endjob: qemuDomainObjEndJob(driver, vm); - - cleanup: - virObjectUnref(cfg); } -- 2.21.0

virQEMUDriverConfigPtr can be auto-unref for the great majority of the uses made in qemu_driver, sparing us a virObjectUnref() call and sometimes a whole 'cleanup' label. This patch changes virQEMUDriverConfigPtr declarations to use VIR_AUTOUNREF(). 'cleanup' labels were deleted when applicable. Since there are a lot of references to change, let's do it in 3 steps. This is step 2. Note: there is a g_autofree GLib macro being used in qemuDomainUndefineFlags. In this particular instance we're using g_autoptr() instead of VIR_AUTOUNREF() to not mix-up VIR_* and GLib macros in that method. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 81 ++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 55 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 1bd9609761..9f9443f493 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4571,7 +4571,7 @@ processNicRxFilterChangedEvent(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *devAlias) { - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDeviceDef dev; virDomainNetDefPtr def; @@ -4670,7 +4670,6 @@ processNicRxFilterChangedEvent(virQEMUDriverPtr driver, cleanup: virNetDevRxFilterFree(hostFilter); virNetDevRxFilterFree(guestFilter); - virObjectUnref(cfg); } @@ -4680,7 +4679,7 @@ processSerialChangedEvent(virQEMUDriverPtr driver, const char *devAlias, bool connected) { - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virDomainChrDeviceState newstate; virObjectEventPtr event = NULL; virDomainDeviceDef dev; @@ -4713,7 +4712,7 @@ processSerialChangedEvent(virQEMUDriverPtr driver, } if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; + return; if (!virDomainObjIsActive(vm)) { VIR_DEBUG("Domain is not running"); @@ -4754,9 +4753,6 @@ processSerialChangedEvent(virQEMUDriverPtr driver, endjob: qemuDomainObjEndJob(driver, vm); - - cleanup: - virObjectUnref(cfg); } @@ -5029,21 +5025,20 @@ qemuDomainSetVcpusMax(virQEMUDriverPtr driver, virDomainDefPtr persistentDef, unsigned int nvcpus) { - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); unsigned int topologycpus; - int ret = -1; if (def) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", _("maximum vcpu count of a live domain can't be modified")); - goto cleanup; + return -1; } if (virDomainNumaGetCPUCountTotal(persistentDef->numa) > nvcpus) { virReportError(VIR_ERR_INVALID_ARG, "%s", _("Number of CPUs in <numa> exceeds the desired " "maximum vcpu count")); - goto cleanup; + return -1; } if (virDomainDefGetVcpusTopology(persistentDef, &topologycpus) == 0 && @@ -5052,23 +5047,19 @@ qemuDomainSetVcpusMax(virQEMUDriverPtr driver, * setting may be corrected via this API */ virReportError(VIR_ERR_INVALID_ARG, "%s", _("CPU topology doesn't match the desired vcpu count")); - goto cleanup; + return -1; } /* ordering information may become invalid, thus clear it */ virDomainDefVcpuOrderClear(persistentDef); if (virDomainDefSetVcpusMax(persistentDef, nvcpus, driver->xmlopt) < 0) - goto cleanup; + return -1; if (virDomainSaveConfig(cfg->configDir, driver->caps, persistentDef) < 0) - goto cleanup; - - ret = 0; + return -1; - cleanup: - virObjectUnref(cfg); - return ret; + return 0; } @@ -5233,7 +5224,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, int ret = -1; virBitmapPtr pcpumap = NULL; virDomainVcpuDefPtr vcpuinfo = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -5290,7 +5281,6 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); virBitmapFree(pcpumap); - virObjectUnref(cfg); return ret; } @@ -5353,7 +5343,7 @@ qemuDomainPinEmulator(virDomainPtr dom, int ret = -1; qemuDomainObjPrivatePtr priv; virBitmapPtr pcpumap = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virObjectEventPtr event = NULL; char *str = NULL; virTypedParameterPtr eventParams = NULL; @@ -5447,7 +5437,6 @@ qemuDomainPinEmulator(virDomainPtr dom, VIR_FREE(str); virBitmapFree(pcpumap); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -5818,7 +5807,7 @@ qemuDomainPinIOThread(virDomainPtr dom, { int ret = -1; virQEMUDriverPtr driver = dom->conn->privateData; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virDomainObjPtr vm; virDomainDefPtr def; virDomainDefPtr persistentDef; @@ -5942,7 +5931,6 @@ qemuDomainPinIOThread(virDomainPtr dom, VIR_FREE(str); virBitmapFree(pcpumap); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -6291,7 +6279,7 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver, virDomainIOThreadAction action, unsigned int flags) { - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; qemuDomainObjPrivatePtr priv; virDomainDefPtr def; virDomainDefPtr persistentDef; @@ -6302,7 +6290,7 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver, priv = vm->privateData; if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; + return -1; if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0) goto endjob; @@ -6390,8 +6378,6 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver, endjob: qemuDomainObjEndJob(driver, vm); - cleanup: - virObjectUnref(cfg); return ret; } @@ -6902,7 +6888,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, int intermediatefd = -1; virCommandPtr cmd = NULL; char *errbuf = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virQEMUSaveHeaderPtr header = &data->header; qemuDomainSaveCookiePtr cookie = NULL; @@ -7024,7 +7010,6 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, VIR_FREE(errbuf); if (qemuSecurityRestoreSavedStateLabel(driver, vm, path) < 0) VIR_WARN("failed to restore save state label on %s", path); - virObjectUnref(cfg); return ret; } @@ -7449,13 +7434,11 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn, virCommandPtr cmd = NULL; char *ret = NULL; size_t i; - virQEMUDriverConfigPtr cfg; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virCapsPtr caps = NULL; virCheckFlags(0, NULL); - cfg = virQEMUDriverGetConfig(driver); - if (virConnectDomainXMLToNativeEnsureACL(conn) < 0) goto cleanup; @@ -7515,7 +7498,6 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn, virCommandFree(cmd); virObjectUnref(vm); virObjectUnref(caps); - virObjectUnref(cfg); return ret; } @@ -7702,7 +7684,7 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, virDomainObjPtr vm = NULL; virDomainPtr dom = NULL; virObjectEventPtr event = NULL; - virQEMUDriverConfigPtr cfg; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virCapsPtr caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -7712,8 +7694,6 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, if (flags & VIR_DOMAIN_DEFINE_VALIDATE) parse_flags |= VIR_DOMAIN_DEF_PARSE_VALIDATE_SCHEMA; - cfg = virQEMUDriverGetConfig(driver); - if (!(caps = virQEMUDriverGetCapabilities(driver, false))) goto cleanup; @@ -7770,7 +7750,6 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); virObjectUnref(caps); - virObjectUnref(cfg); return dom; } @@ -7791,7 +7770,7 @@ qemuDomainUndefineFlags(virDomainPtr dom, int ret = -1; int nsnapshots; int ncheckpoints; - virQEMUDriverConfigPtr cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; g_autofree char *nvram_path = NULL; virCheckFlags(VIR_DOMAIN_UNDEFINE_MANAGED_SAVE | @@ -7919,7 +7898,6 @@ qemuDomainUndefineFlags(virDomainPtr dom, VIR_FREE(name); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(cfg); return ret; } @@ -8739,7 +8717,7 @@ qemuDomainAttachDeviceLiveAndConfig(virDomainObjPtr vm, { qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr vmdef = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virDomainDeviceDefPtr devConf = NULL; virDomainDeviceDefPtr devLive = NULL; int ret = -1; @@ -8824,7 +8802,6 @@ qemuDomainAttachDeviceLiveAndConfig(virDomainObjPtr vm, virDomainDefFree(vmdef); virDomainDeviceDefFree(devConf); virDomainDeviceDefFree(devLive); - virObjectUnref(cfg); virObjectUnref(caps); return ret; @@ -8885,7 +8862,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; bool force = (flags & VIR_DOMAIN_DEVICE_MODIFY_FORCE) != 0; int ret = -1; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCapsPtr caps = NULL; unsigned int parse_flags = 0; @@ -8986,7 +8963,6 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); virObjectUnref(caps); - virObjectUnref(cfg); virNWFilterUnlockFilterUpdates(); return ret; } @@ -8999,7 +8975,7 @@ qemuDomainDetachDeviceLiveAndConfig(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virCapsPtr caps = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE; virDomainDefPtr vmdef = NULL; @@ -9078,7 +9054,6 @@ qemuDomainDetachDeviceLiveAndConfig(virQEMUDriverPtr driver, cleanup: virObjectUnref(caps); - virObjectUnref(cfg); if (dev != dev_copy) virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); @@ -9095,7 +9070,7 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virCapsPtr caps = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainDefPtr vmdef = NULL; @@ -9156,7 +9131,6 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriverPtr driver, ret = 0; cleanup: virDomainDefFree(vmdef); - virObjectUnref(cfg); virObjectUnref(caps); return ret; } @@ -9265,7 +9239,7 @@ static int qemuDomainSetAutostart(virDomainPtr dom, virDomainObjPtr vm; char *configFile = NULL, *autostartLink = NULL; int ret = -1; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; if (!(vm = qemuDomainObjFromDomain(dom))) return -1; @@ -9330,7 +9304,6 @@ static int qemuDomainSetAutostart(virDomainPtr dom, VIR_FREE(configFile); VIR_FREE(autostartLink); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -9577,7 +9550,7 @@ qemuDomainSetBlkioParameters(virDomainPtr dom, virDomainDefPtr def; virDomainDefPtr persistentDef; int ret = -1; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; qemuDomainObjPrivatePtr priv; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -9777,7 +9750,6 @@ qemuDomainSetBlkioParameters(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -9889,7 +9861,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, bool set_swap_hard_limit = false; bool set_hard_limit = false; bool set_soft_limit = false; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; int rc; int ret = -1; qemuDomainObjPrivatePtr priv; @@ -10014,7 +9986,6 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } -- 2.21.0

virQEMUDriverConfigPtr can be auto-unref for the great majority of the uses made in qemu_driver, sparing us a virObjectUnref() call and sometimes a whole 'cleanup' label. This patch changes virQEMUDriverConfigPtr declarations to use VIR_AUTOUNREF(). 'cleanup' labels were deleted when applicable. This is the last part of this change. All but one* instance of virQEMUDriverConfigPtr were changed to use VIR_AUTOUNREF(). 'cleanup' labels were deleted when applicable. * qemuStateInitialize: we can't auto-unref the pointer since we're initializing the qemu_driver object with it. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 51 ++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 34 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 9f9443f493..d9effd7f34 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -10150,7 +10150,7 @@ qemuDomainSetNumaParameters(virDomainPtr dom, virDomainDefPtr persistentDef; virDomainObjPtr vm = NULL; int ret = -1; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; qemuDomainObjPrivatePtr priv; virBitmapPtr nodeset = NULL; virDomainNumatuneMemMode config_mode; @@ -10262,7 +10262,6 @@ qemuDomainSetNumaParameters(virDomainPtr dom, cleanup: virBitmapFree(nodeset); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -10367,7 +10366,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; size_t i; virDomainObjPtr vm = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; qemuDomainObjPrivatePtr priv; virDomainDefPtr def; virDomainDefPtr persistentDef; @@ -10459,7 +10458,6 @@ qemuDomainSetPerfEvents(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -10646,7 +10644,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom, long long value_l; int ret = -1; int rc; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCapsPtr caps = NULL; qemuDomainObjPrivatePtr priv; virObjectEventPtr event = NULL; @@ -10940,7 +10938,6 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom, if (eventNparams) virTypedParamsFree(eventParams, eventNparams); virObjectUnref(caps); - virObjectUnref(cfg); return ret; } #undef SCHED_RANGE_CHECK @@ -11605,7 +11602,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, int ret = -1; virDomainNetDefPtr net = NULL, persistentNet = NULL; virNetDevBandwidthPtr bandwidth = NULL, newBandwidth = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; bool inboundSpecified = false, outboundSpecified = false; int actualType; bool qosSupported = true; @@ -11800,7 +11797,6 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, virNetDevBandwidthFree(bandwidth); virNetDevBandwidthFree(newBandwidth); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -12062,7 +12058,7 @@ qemuDomainMemoryPeek(virDomainPtr dom, char *tmp = NULL; int fd = -1, ret = -1; qemuDomainObjPrivatePtr priv; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(VIR_MEMORY_VIRTUAL | VIR_MEMORY_PHYSICAL, -1); @@ -12133,7 +12129,6 @@ qemuDomainMemoryPeek(virDomainPtr dom, unlink(tmp); VIR_FREE(tmp); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -12350,7 +12345,7 @@ qemuDomainGetBlockInfo(virDomainPtr dom, virDomainObjPtr vm; int ret = -1; virDomainDiskDefPtr disk; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; qemuBlockStatsPtr entry = NULL; virCheckFlags(0, -1); @@ -12439,7 +12434,6 @@ qemuDomainGetBlockInfo(virDomainPtr dom, cleanup: VIR_FREE(entry); virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -12911,7 +12905,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, unsigned int flags) { virQEMUDriverPtr driver = dconn->privateData; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virDomainDefPtr def = NULL; const char *dom_xml = NULL; const char *dname = NULL; @@ -12985,7 +12979,6 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, VIR_FREE(migrate_disks); VIR_FREE(origname); virDomainDefFree(def); - virObjectUnref(cfg); return ret; } @@ -14709,7 +14702,7 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver, virCommandPtr cmd = NULL; const char *qemuImgPath; virBitmapPtr created = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); int ret = -1; virBuffer buf = VIR_BUFFER_INITIALIZER; virDomainSnapshotDefPtr snapdef = virDomainSnapshotObjGetDef(snap); @@ -14797,7 +14790,6 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver, } } virBitmapFree(created); - virObjectUnref(cfg); return ret; } @@ -15899,7 +15891,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS; int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL; bool align_match = true; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCapsPtr caps = NULL; qemuDomainObjPrivatePtr priv; virDomainSnapshotState state; @@ -16173,7 +16165,6 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, virDomainObjEndAPI(&vm); VIR_FREE(xml); virObjectUnref(caps); - virObjectUnref(cfg); return snapshot; } @@ -16583,7 +16574,7 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, int rc; virDomainDefPtr config = NULL; virDomainDefPtr inactiveConfig = NULL; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCapsPtr caps = NULL; bool was_stopped = false; qemuDomainSaveCookiePtr cookie; @@ -17002,7 +16993,6 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, virObjectEventStateQueue(driver->domainEventState, event2); virDomainObjEndAPI(&vm); virObjectUnref(caps); - virObjectUnref(cfg); virNWFilterUnlockFilterUpdates(); virCPUDefFree(origCPU); virDomainDefFree(config); @@ -17063,7 +17053,7 @@ qemuDomainSnapshotDelete(virDomainSnapshotPtr snapshot, virQEMUMomentReparent rep; bool metadata_only = !!(flags & VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY); int external = 0; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCheckFlags(VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN | VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY | @@ -17155,7 +17145,6 @@ qemuDomainSnapshotDelete(virDomainSnapshotPtr snapshot, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } @@ -17735,7 +17724,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainDiskDefPtr disk = NULL; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); bool pivot = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT); bool async = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC); qemuBlockJobDataPtr job = NULL; @@ -17840,7 +17829,6 @@ qemuDomainBlockJobAbort(virDomainPtr dom, cleanup: virObjectUnref(job); - virObjectUnref(cfg); virDomainObjEndAPI(&vm); return ret; } @@ -19100,7 +19088,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, bool supportMaxOptions = true; bool supportGroupNameOption = true; bool supportMaxLengthOptions = true; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virObjectEventPtr event = NULL; virTypedParameterPtr eventParams = NULL; int eventNparams = 0; @@ -19421,7 +19409,6 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, virDomainObjEndAPI(&vm); if (eventNparams) virTypedParamsFree(eventParams, eventNparams); - virObjectUnref(cfg); return ret; } @@ -19671,7 +19658,7 @@ qemuDomainSetMetadata(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virCapsPtr caps = NULL; int ret = -1; @@ -19707,7 +19694,6 @@ qemuDomainSetMetadata(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); virObjectUnref(caps); - virObjectUnref(cfg); return ret; } @@ -21294,7 +21280,7 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver, virHashTablePtr nodestats = NULL; virJSONValuePtr nodedata = NULL; qemuDomainObjPrivatePtr priv = dom->privateData; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV); bool fetchnodedata = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_QUERY_NAMED_BLOCK_NODES) && !blockdev; @@ -21352,7 +21338,6 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver, virHashFree(stats); virHashFree(nodestats); virJSONValueFree(nodedata); - virObjectUnref(cfg); return ret; } @@ -21991,7 +21976,7 @@ qemuDomainRenameCallback(virDomainObjPtr vm, void *opaque) { virQEMUDriverPtr driver = opaque; - virQEMUDriverConfigPtr cfg = NULL; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virObjectEventPtr event_new = NULL; virObjectEventPtr event_old = NULL; int ret = -1; @@ -22080,7 +22065,6 @@ qemuDomainRenameCallback(virDomainObjPtr vm, VIR_FREE(new_dom_name); virObjectEventStateQueue(driver->domainEventState, event_old); virObjectEventStateQueue(driver->domainEventState, event_new); - virObjectUnref(cfg); return ret; rollback: @@ -22543,7 +22527,7 @@ qemuDomainSetLifecycleAction(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; - virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv; virDomainObjPtr vm = NULL; virDomainDefPtr def = NULL; @@ -22600,7 +22584,6 @@ qemuDomainSetLifecycleAction(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } -- 2.21.0

virCapsPtr can be auto-unref for the great majority of the uses made in qemu_driver, sparing us a virObjectUnref() call and sometimes a whole 'cleanup' label. This patch changes virCapsPtr declarations to use VIR_AUTOUNREF(). 'cleanup' labels were deleted when possible. Suggested-by: Erik Skultety <eskultet@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 113 ++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 76 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d9effd7f34..99923b0ab6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -396,7 +396,7 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, VIR_DOMAIN_SNAPSHOT_PARSE_DISKS | VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL); int ret = -1; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; int direrr; qemuDomainObjPrivatePtr priv; @@ -495,7 +495,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, cleanup: VIR_DIR_CLOSE(dir); VIR_FREE(snapDir); - virObjectUnref(caps); virObjectUnlock(vm); return ret; } @@ -516,7 +515,7 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virDomainMomentObjPtr current = NULL; unsigned int flags = VIR_DOMAIN_CHECKPOINT_PARSE_REDEFINE; int ret = -1; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; int direrr; qemuDomainObjPrivatePtr priv; @@ -606,7 +605,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, cleanup: VIR_DIR_CLOSE(dir); VIR_FREE(chkDir); - virObjectUnref(caps); virObjectUnlock(vm); return ret; } @@ -1072,13 +1070,13 @@ static int qemuStateReload(void) { VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; if (!qemu_driver) return 0; if (!(caps = virQEMUDriverGetCapabilities(qemu_driver, false))) - goto cleanup; + return 0; cfg = virQEMUDriverGetConfig(qemu_driver); virDomainObjListLoadAllConfigs(qemu_driver->domains, @@ -1086,8 +1084,6 @@ qemuStateReload(void) cfg->autostartDir, false, caps, qemu_driver->xmlopt, qemuNotifyLoadDomain, qemu_driver); - cleanup: - virObjectUnref(caps); return 0; } @@ -1356,21 +1352,15 @@ qemuConnectGetMaxVcpus(virConnectPtr conn G_GNUC_UNUSED, const char *type) static char *qemuConnectGetCapabilities(virConnectPtr conn) { virQEMUDriverPtr driver = conn->privateData; - virCapsPtr caps = NULL; - char *xml = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; if (virConnectGetCapabilitiesEnsureACL(conn) < 0) return NULL; if (!(caps = virQEMUDriverGetCapabilities(driver, true))) - goto cleanup; - - xml = virCapabilitiesFormatXML(caps); - virObjectUnref(caps); - - cleanup: + return NULL; - return xml; + return virCapabilitiesFormatXML(caps); } @@ -1716,27 +1706,22 @@ static int qemuDomainIsUpdated(virDomainPtr dom) static int qemuConnectGetVersion(virConnectPtr conn, unsigned long *version) { virQEMUDriverPtr driver = conn->privateData; - int ret = -1; unsigned int qemuVersion = 0; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; if (virConnectGetVersionEnsureACL(conn) < 0) return -1; if (!(caps = virQEMUDriverGetCapabilities(driver, false))) - goto cleanup; + return -1; if (virQEMUCapsGetDefaultVersion(caps, driver->qemuCapsCache, &qemuVersion) < 0) - goto cleanup; + return -1; *version = qemuVersion; - ret = 0; - - cleanup: - virObjectUnref(caps); - return ret; + return 0; } @@ -1789,7 +1774,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, virObjectEventPtr event = NULL; virObjectEventPtr event2 = NULL; unsigned int start_flags = VIR_QEMU_PROCESS_START_COLD; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -1864,7 +1849,6 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); virObjectEventStateQueue(driver->domainEventState, event2); - virObjectUnref(caps); virNWFilterUnlockFilterUpdates(); return dom; } @@ -3324,7 +3308,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, int ret = -1; virObjectEventPtr event = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; - virCapsPtr caps; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; virQEMUSaveDataPtr data = NULL; qemuDomainSaveCookiePtr cookie = NULL; @@ -3439,7 +3423,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, VIR_FREE(xml); virQEMUSaveDataFree(data); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(caps); return ret; } @@ -6604,29 +6587,27 @@ static int qemuNodeGetSecurityModel(virConnectPtr conn, { virQEMUDriverPtr driver = conn->privateData; char *p; - int ret = 0; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; memset(secmodel, 0, sizeof(*secmodel)); if (!(caps = virQEMUDriverGetCapabilities(driver, false))) - goto cleanup; + return 0; if (virNodeGetSecurityModelEnsureACL(conn) < 0) - goto cleanup; + return 0; /* We treat no driver as success, but simply return no data in *secmodel */ if (caps->host.nsecModels == 0 || caps->host.secModels[0].model == NULL) - goto cleanup; + return 0; p = caps->host.secModels[0].model; if (strlen(p) >= VIR_SECURITY_MODEL_BUFLEN-1) { virReportError(VIR_ERR_INTERNAL_ERROR, _("security model string exceeds max %d bytes"), VIR_SECURITY_MODEL_BUFLEN-1); - ret = -1; - goto cleanup; + return -1; } strcpy(secmodel->model, p); @@ -6635,14 +6616,11 @@ static int qemuNodeGetSecurityModel(virConnectPtr conn, virReportError(VIR_ERR_INTERNAL_ERROR, _("security DOI string exceeds max %d bytes"), VIR_SECURITY_DOI_BUFLEN-1); - ret = -1; - goto cleanup; + return -1; } strcpy(secmodel->doi, p); - cleanup: - virObjectUnref(caps); - return ret; + return 0; } @@ -6663,7 +6641,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, virDomainDefPtr ret = NULL; virDomainDefPtr newdef_migr = NULL; virDomainDefPtr newdef = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; if (!(caps = virQEMUDriverGetCapabilities(driver, false))) goto cleanup; @@ -6701,7 +6679,6 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, } cleanup: - virObjectUnref(caps); virDomainDefFree(newdef); virDomainDefFree(newdef_migr); @@ -6741,7 +6718,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver, virQEMUSaveHeaderPtr header; virDomainDefPtr def = NULL; int oflags = open_write ? O_RDWR : O_RDONLY; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; size_t xml_len; size_t cookie_len; @@ -6861,7 +6838,6 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver, *ret_data = data; cleanup: - virObjectUnref(caps); return fd; error: @@ -7435,7 +7411,7 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn, char *ret = NULL; size_t i; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; virCheckFlags(0, NULL); @@ -7497,7 +7473,6 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn, cleanup: virCommandFree(cmd); virObjectUnref(vm); - virObjectUnref(caps); return ret; } @@ -7685,7 +7660,7 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, virDomainPtr dom = NULL; virObjectEventPtr event = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -7749,7 +7724,6 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, virDomainDefFree(def); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); - virObjectUnref(caps); return dom; } @@ -8721,7 +8695,7 @@ qemuDomainAttachDeviceLiveAndConfig(virDomainObjPtr vm, virDomainDeviceDefPtr devConf = NULL; virDomainDeviceDefPtr devLive = NULL; int ret = -1; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -8802,7 +8776,6 @@ qemuDomainAttachDeviceLiveAndConfig(virDomainObjPtr vm, virDomainDefFree(vmdef); virDomainDeviceDefFree(devConf); virDomainDeviceDefFree(devLive); - virObjectUnref(caps); return ret; } @@ -8863,7 +8836,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, bool force = (flags & VIR_DOMAIN_DEVICE_MODIFY_FORCE) != 0; int ret = -1; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; unsigned int parse_flags = 0; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -8962,7 +8935,6 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); virDomainObjEndAPI(&vm); - virObjectUnref(caps); virNWFilterUnlockFilterUpdates(); return ret; } @@ -8974,7 +8946,7 @@ qemuDomainDetachDeviceLiveAndConfig(virQEMUDriverPtr driver, unsigned int flags) { qemuDomainObjPrivatePtr priv = vm->privateData; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE; @@ -9053,7 +9025,6 @@ qemuDomainDetachDeviceLiveAndConfig(virQEMUDriverPtr driver, ret = 0; cleanup: - virObjectUnref(caps); if (dev != dev_copy) virDomainDeviceDefFree(dev_copy); virDomainDeviceDefFree(dev); @@ -9069,7 +9040,7 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriverPtr driver, unsigned int flags) { qemuDomainObjPrivatePtr priv = vm->privateData; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; @@ -9131,7 +9102,6 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriverPtr driver, ret = 0; cleanup: virDomainDefFree(vmdef); - virObjectUnref(caps); return ret; } @@ -10645,7 +10615,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom, int ret = -1; int rc; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; qemuDomainObjPrivatePtr priv; virObjectEventPtr event = NULL; virTypedParameterPtr eventParams = NULL; @@ -10937,7 +10907,6 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom, virDomainObjEndAPI(&vm); if (eventNparams) virTypedParamsFree(eventParams, eventNparams); - virObjectUnref(caps); return ret; } #undef SCHED_RANGE_CHECK @@ -13549,27 +13518,22 @@ qemuConnectCompareCPU(virConnectPtr conn, unsigned int flags) { virQEMUDriverPtr driver = conn->privateData; - int ret = VIR_CPU_COMPARE_ERROR; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; bool failIncompatible; virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE, VIR_CPU_COMPARE_ERROR); if (virConnectCompareCPUEnsureACL(conn) < 0) - goto cleanup; + return VIR_CPU_COMPARE_ERROR; failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE); if (!(caps = virQEMUDriverGetCapabilities(driver, false))) - goto cleanup; - - ret = virCPUCompareXML(caps->host.arch, caps->host.cpu, - xmlDesc, failIncompatible); + return VIR_CPU_COMPARE_ERROR; - cleanup: - virObjectUnref(caps); - return ret; + return virCPUCompareXML(caps->host.arch, caps->host.cpu, + xmlDesc, failIncompatible); } @@ -15892,7 +15856,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL; bool align_match = true; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; qemuDomainObjPrivatePtr priv; virDomainSnapshotState state; VIR_AUTOUNREF(virDomainSnapshotDefPtr) def = NULL; @@ -16164,7 +16128,6 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, cleanup: virDomainObjEndAPI(&vm); VIR_FREE(xml); - virObjectUnref(caps); return snapshot; } @@ -16575,7 +16538,7 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, virDomainDefPtr config = NULL; virDomainDefPtr inactiveConfig = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; bool was_stopped = false; qemuDomainSaveCookiePtr cookie; virCPUDefPtr origCPU = NULL; @@ -16992,7 +16955,6 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, virObjectEventStateQueue(driver->domainEventState, event); virObjectEventStateQueue(driver->domainEventState, event2); virDomainObjEndAPI(&vm); - virObjectUnref(caps); virNWFilterUnlockFilterUpdates(); virCPUDefFree(origCPU); virDomainDefFree(config); @@ -19659,7 +19621,7 @@ qemuDomainSetMetadata(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - virCapsPtr caps = NULL; + VIR_AUTOUNREF(virCapsPtr) caps = NULL; int ret = -1; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -19693,7 +19655,6 @@ qemuDomainSetMetadata(virDomainPtr dom, cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(caps); return ret; } -- 2.21.0

This patch uses VIR_AUTOUNREF() with the following pointer types: - virQEMUCapsPtr - virConnect - qemuDomainSaveCookiePtr - virDomainCapsPtr - qemuBlockJobDataPtr* - virNetworkPtr - virSecurityManagerPtr 'cleanup' labels were deleted when possible. * instances being cleaned up with qemuBlockJobStartupFinalize() weren't changed, since qemuBlockJobStartupFinalize() will unref the object after qemuBlockJobUnregister(). Suggested-by: Erik Skultety <eskultet@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 64 +++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 99923b0ab6..d95c5c5b81 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -305,8 +305,8 @@ static int qemuSecurityInit(virQEMUDriverPtr driver) { char **names; - virSecurityManagerPtr mgr = NULL; - virSecurityManagerPtr stack = NULL; + VIR_AUTOUNREF(virSecurityManagerPtr) mgr = NULL; + VIR_AUTOUNREF(virSecurityManagerPtr) stack = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); unsigned int flags = 0; @@ -372,8 +372,6 @@ qemuSecurityInit(virQEMUDriverPtr driver) error: virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Failed to initialize security drivers")); - virObjectUnref(stack); - virObjectUnref(mgr); return -1; } @@ -1098,7 +1096,7 @@ static int qemuStateStop(void) { int ret = -1; - virConnectPtr conn; + VIR_AUTOUNREF(virConnectPtr) conn = NULL; int numDomains = 0; size_t i; int state; @@ -1142,7 +1140,6 @@ qemuStateStop(void) VIR_FREE(domains); } VIR_FREE(flags); - virObjectUnref(conn); return ret; } @@ -3310,7 +3307,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; VIR_AUTOUNREF(virCapsPtr) caps = NULL; virQEMUSaveDataPtr data = NULL; - qemuDomainSaveCookiePtr cookie = NULL; + VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; if (!(caps = virQEMUDriverGetCapabilities(driver, false))) goto cleanup; @@ -3419,7 +3416,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, qemuDomainRemoveInactiveJob(driver, vm); cleanup: - virObjectUnref(cookie); VIR_FREE(xml); virQEMUSaveDataFree(data); virObjectEventStateQueue(driver->domainEventState, event); @@ -6866,7 +6862,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, char *errbuf = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virQEMUSaveHeaderPtr header = &data->header; - qemuDomainSaveCookiePtr cookie = NULL; + VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; if (virSaveCookieParseString(data->cookie, (virObjectPtr *)&cookie, virDomainXMLOptionGetSaveCookie(driver->xmlopt)) < 0) @@ -6981,7 +6977,6 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, ret = 0; cleanup: - virObjectUnref(cookie); virCommandFree(cmd); VIR_FREE(errbuf); if (qemuSecurityRestoreSavedStateLabel(driver, vm, path) < 0) @@ -13588,7 +13583,7 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn, int ret = VIR_CPU_COMPARE_ERROR; virQEMUDriverPtr driver = conn->privateData; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - virQEMUCapsPtr qemuCaps = NULL; + VIR_AUTOUNREF(virQEMUCapsPtr) qemuCaps = NULL; bool failIncompatible; virCPUDefPtr hvCPU; virCPUDefPtr cpu = NULL; @@ -13642,7 +13637,6 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn, cleanup: virCPUDefFree(cpu); - virObjectUnref(qemuCaps); return ret; } @@ -13802,7 +13796,7 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn, virQEMUDriverPtr driver = conn->privateData; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virCPUDefPtr *cpus = NULL; - virQEMUCapsPtr qemuCaps = NULL; + VIR_AUTOUNREF(virQEMUCapsPtr) qemuCaps = NULL; virArch arch; virDomainVirtType virttype; virDomainCapsCPUModelsPtr cpuModels; @@ -13881,7 +13875,6 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn, cleanup: virCPUDefListFree(cpus); virCPUDefFree(cpu); - virObjectUnref(qemuCaps); virStringListFree(features); return cpustr; @@ -17689,7 +17682,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom, VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); bool pivot = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT); bool async = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC); - qemuBlockJobDataPtr job = NULL; + VIR_AUTOUNREF(qemuBlockJobDataPtr) job = NULL; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv = NULL; bool blockdev = false; @@ -17790,7 +17783,6 @@ qemuDomainBlockJobAbort(virDomainPtr dom, qemuDomainObjEndJob(driver, vm); cleanup: - virObjectUnref(job); virDomainObjEndAPI(&vm); return ret; } @@ -20460,17 +20452,16 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn, const char *virttype_str, unsigned int flags) { - char *ret = NULL; virQEMUDriverPtr driver = conn->privateData; - virQEMUCapsPtr qemuCaps = NULL; + VIR_AUTOUNREF(virQEMUCapsPtr) qemuCaps = NULL; virArch arch; virDomainVirtType virttype; - virDomainCapsPtr domCaps = NULL; + VIR_AUTOUNREF(virDomainCapsPtr) domCaps = NULL; - virCheckFlags(0, ret); + virCheckFlags(0, NULL); if (virConnectGetDomainCapabilitiesEnsureACL(conn) < 0) - return ret; + return NULL; qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache, emulatorbin, @@ -20479,18 +20470,14 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn, machine, &arch, &virttype, &machine); if (!qemuCaps) - goto cleanup; + return NULL; if (!(domCaps = virQEMUDriverGetDomainCapabilities(driver, qemuCaps, machine, arch, virttype))) - goto cleanup; + return NULL; - ret = virDomainCapsFormat(domCaps); - cleanup: - virObjectUnref(domCaps); - virObjectUnref(qemuCaps); - return ret; + return virDomainCapsFormat(domCaps); } @@ -21733,7 +21720,7 @@ qemuGetDHCPInterfaces(virDomainPtr dom, int n_leases = 0; size_t i, j; size_t ifaces_count = 0; - virNetworkPtr network = NULL; + VIR_AUTOUNREF(virNetworkPtr) network = NULL; char macaddr[VIR_MAC_STRING_BUFLEN]; virDomainInterfacePtr iface = NULL; virNetworkDHCPLeasePtr *leases = NULL; @@ -21801,7 +21788,6 @@ qemuGetDHCPInterfaces(virDomainPtr dom, rv = ifaces_count; cleanup: - virObjectUnref(network); if (leases) { for (i = 0; i < n_leases; i++) virNetworkDHCPLeaseFree(leases[i]); @@ -22596,32 +22582,26 @@ qemuNodeGetSEVInfo(virConnectPtr conn, unsigned int flags) { virQEMUDriverPtr driver = conn->privateData; - virQEMUCapsPtr qemucaps = NULL; - int ret = -1; + VIR_AUTOUNREF(virQEMUCapsPtr) qemucaps = NULL; if (virNodeGetSevInfoEnsureACL(conn) < 0) - return ret; + return -1; qemucaps = virQEMUCapsCacheLookupByArch(driver->qemuCapsCache, virArchFromHost()); if (!qemucaps) - goto cleanup; + return -1; if (!virQEMUCapsGet(qemucaps, QEMU_CAPS_SEV_GUEST)) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", _("QEMU does not support SEV guest")); - goto cleanup; + return -1; } if (qemuGetSEVInfoToParams(qemucaps, params, nparams, flags) < 0) - goto cleanup; - - ret = 0; - - cleanup: - virObjectUnref(qemucaps); + return -1; - return ret; + return 0; } -- 2.21.0

Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label. This is a huge change due to the amount of char * declared in this file, thus let's split it in 3. This is the first part. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 103 +++++++++++++---------------------------- 1 file changed, 33 insertions(+), 70 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d95c5c5b81..f887a79ecd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -381,11 +381,9 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - char *snapDir = NULL; + VIR_AUTOFREE(char *) snapDir = NULL; DIR *dir = NULL; struct dirent *entry; - char *xmlStr; - char *fullpath; virDomainSnapshotDefPtr def = NULL; virDomainMomentObjPtr snap = NULL; virDomainMomentObjPtr current = NULL; @@ -420,6 +418,9 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, goto cleanup; while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { + VIR_AUTOFREE(char *) xmlStr = NULL; + VIR_AUTOFREE(char *) fullpath = NULL; + /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ VIR_INFO("Loading snapshot file '%s'", entry->d_name); @@ -435,7 +436,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, virReportSystemError(errno, _("Failed to read snapshot file %s"), fullpath); - VIR_FREE(fullpath); continue; } @@ -448,8 +448,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse snapshot XML from file '%s'"), fullpath); - VIR_FREE(fullpath); - VIR_FREE(xmlStr); continue; } @@ -463,9 +461,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, vm->def->name); current = snap; } - - VIR_FREE(fullpath); - VIR_FREE(xmlStr); } if (direrr < 0) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -492,7 +487,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, ret = 0; cleanup: VIR_DIR_CLOSE(dir); - VIR_FREE(snapDir); virObjectUnlock(vm); return ret; } @@ -503,11 +497,9 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - char *chkDir = NULL; + VIR_AUTOFREE(char *) chkDir = NULL; DIR *dir = NULL; struct dirent *entry; - char *xmlStr; - char *fullpath; virDomainCheckpointDefPtr def = NULL; virDomainMomentObjPtr chk = NULL; virDomainMomentObjPtr current = NULL; @@ -538,6 +530,9 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, goto cleanup; while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { + VIR_AUTOFREE(char *) xmlStr = NULL; + VIR_AUTOFREE(char *) fullpath = NULL; + /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ VIR_INFO("Loading checkpoint file '%s'", entry->d_name); @@ -553,7 +548,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virReportSystemError(errno, _("Failed to read checkpoint file %s"), fullpath); - VIR_FREE(fullpath); continue; } @@ -566,8 +560,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse checkpoint XML from file '%s'"), fullpath); - VIR_FREE(fullpath); - VIR_FREE(xmlStr); virObjectUnref(def); continue; } @@ -575,9 +567,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, chk = virDomainCheckpointAssignDef(vm->checkpoints, def); if (chk == NULL) virObjectUnref(def); - - VIR_FREE(fullpath); - VIR_FREE(xmlStr); } if (direrr < 0) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -602,7 +591,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, ret = 0; cleanup: VIR_DIR_CLOSE(dir); - VIR_FREE(chkDir); virObjectUnlock(vm); return ret; } @@ -660,12 +648,11 @@ qemuStateInitialize(bool privileged, virStateInhibitCallback callback, void *opaque) { - char *driverConf = NULL; + VIR_AUTOFREE(char *) driverConf = NULL; virQEMUDriverConfigPtr cfg; uid_t run_uid = -1; gid_t run_gid = -1; - char *hugepagePath = NULL; - char *memoryBackingPath = NULL; + VIR_AUTOFREE(char *) memoryBackingPath = NULL; bool autostart = true; size_t i; @@ -706,7 +693,6 @@ qemuStateInitialize(bool privileged, if (virQEMUDriverConfigLoadFile(cfg, driverConf, privileged) < 0) goto error; - VIR_FREE(driverConf); if (virQEMUDriverConfigValidate(cfg) < 0) goto error; @@ -830,7 +816,7 @@ qemuStateInitialize(bool privileged, goto error; if (privileged) { - char *channeldir; + VIR_AUTOFREE(char *) channeldir = NULL; if (chown(cfg->libDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, @@ -883,10 +869,8 @@ qemuStateInitialize(bool privileged, _("unable to set ownership of '%s' to %d:%d"), channeldir, (int)cfg->user, (int)cfg->group); - VIR_FREE(channeldir); goto error; } - VIR_FREE(channeldir); if (chown(cfg->channelTargetDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, _("unable to set ownership of '%s' to %d:%d"), @@ -937,6 +921,8 @@ qemuStateInitialize(bool privileged, * it, since we can't assume the root mount point has permissions that * will let our spawned QEMU instances use it. */ for (i = 0; i < cfg->nhugetlbfs; i++) { + VIR_AUTOFREE(char *) hugepagePath = NULL; + hugepagePath = qemuGetBaseHugepagePath(&cfg->hugetlbfs[i]); if (!hugepagePath) @@ -952,7 +938,6 @@ qemuStateInitialize(bool privileged, virFileUpdatePerm(cfg->hugetlbfs[i].mnt_dir, 0, S_IXGRP | S_IXOTH) < 0) goto error; - VIR_FREE(hugepagePath); } if (qemuGetMemoryBackingBasePath(cfg, &memoryBackingPath) < 0) @@ -969,7 +954,6 @@ qemuStateInitialize(bool privileged, virFileUpdatePerm(memoryBackingPath, 0, S_IXGRP | S_IXOTH) < 0) goto error; - VIR_FREE(memoryBackingPath); if (!(qemu_driver->closeCallbacks = virCloseCallbacksNew())) goto error; @@ -1038,9 +1022,6 @@ qemuStateInitialize(bool privileged, return VIR_DRV_STATE_INIT_COMPLETE; error: - VIR_FREE(driverConf); - VIR_FREE(hugepagePath); - VIR_FREE(memoryBackingPath); qemuStateCleanup(); return VIR_DRV_STATE_INIT_ERROR; } @@ -1365,8 +1346,8 @@ static int qemuGetSchedInfo(unsigned long long *cpuWait, pid_t pid, pid_t tid) { - char *proc = NULL; - char *data = NULL; + VIR_AUTOFREE(char *) proc = NULL; + VIR_AUTOFREE(char *) data = NULL; char **lines = NULL; size_t i; int ret = -1; @@ -1430,8 +1411,6 @@ qemuGetSchedInfo(unsigned long long *cpuWait, ret = 0; cleanup: - VIR_FREE(data); - VIR_FREE(proc); virStringListFree(lines); return ret; } @@ -1441,7 +1420,7 @@ static int qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, pid_t pid, int tid) { - char *proc; + VIR_AUTOFREE(char *) proc = NULL; FILE *pidinfo; unsigned long long usertime = 0, systime = 0; long rss = 0; @@ -1458,7 +1437,6 @@ qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, return -1; pidinfo = fopen(proc, "r"); - VIR_FREE(proc); /* See 'man proc' for information about what all these fields are. We're * only interested in a very few of them */ @@ -2910,9 +2888,8 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, size_t len; size_t xml_len; size_t cookie_len = 0; - int ret = -1; size_t zerosLen = 0; - char *zeros = NULL; + VIR_AUTOFREE(char *) zeros = NULL; xml_len = strlen(data->xml) + 1; if (data->cookie) @@ -2924,12 +2901,12 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, if (len > header->data_len) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("new xml too large to fit in file")); - goto cleanup; + return -1; } zerosLen = header->data_len - len; if (VIR_ALLOC_N(zeros, zerosLen) < 0) - goto cleanup; + return -1; } else { header->data_len = len; } @@ -2941,14 +2918,14 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, virReportSystemError(errno, _("failed to write header to domain save file '%s'"), path); - goto cleanup; + return -1; } if (safewrite(fd, data->xml, xml_len) != xml_len) { virReportSystemError(errno, _("failed to write domain xml to '%s'"), path); - goto cleanup; + return -1; } if (data->cookie && @@ -2956,21 +2933,17 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, virReportSystemError(errno, _("failed to write cookie to '%s'"), path); - goto cleanup; + return -1; } if (safewrite(fd, zeros, zerosLen) != zerosLen) { virReportSystemError(errno, _("failed to write padding to '%s'"), path); - goto cleanup; + return -1; } - ret = 0; - - cleanup: - VIR_FREE(zeros); - return ret; + return 0; } @@ -3300,7 +3273,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, int compressed, const char *compressedpath, const char *xmlin, unsigned int flags) { - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; bool was_running = false; int ret = -1; virObjectEventPtr event = NULL; @@ -3381,7 +3354,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, if (!(data = virQEMUSaveDataNew(xml, cookie, was_running, compressed, driver->xmlopt))) goto endjob; - xml = NULL; ret = qemuDomainSaveMemory(driver, vm, path, data, compressedpath, flags, QEMU_ASYNC_JOB_SAVE); @@ -3416,7 +3388,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, qemuDomainRemoveInactiveJob(driver, vm); cleanup: - VIR_FREE(xml); virQEMUSaveDataFree(data); virObjectEventStateQueue(driver->domainEventState, event); return ret; @@ -3504,7 +3475,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, { virQEMUDriverPtr driver = dom->conn->privateData; int compressed; - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; int ret = -1; virDomainObjPtr vm = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; @@ -3533,7 +3504,6 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(compressedpath); return ret; } @@ -3561,9 +3531,9 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; int compressed; - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; virDomainObjPtr vm; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL; int ret = -1; virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | @@ -3603,8 +3573,6 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(name); - VIR_FREE(compressedpath); return ret; } @@ -3614,7 +3582,7 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, void *opaque) { virQEMUDriverPtr driver = opaque; - char *name; + VIR_AUTOFREE(char *) name = NULL; int ret = -1; virObjectLock(vm); @@ -3627,7 +3595,6 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, ret = 0; cleanup: virObjectUnlock(vm); - VIR_FREE(name); return ret; } @@ -3659,7 +3626,7 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; int ret = -1; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL; virCheckFlags(0, -1); @@ -3683,7 +3650,6 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) ret = 0; cleanup: - VIR_FREE(name); virDomainObjEndAPI(&vm); return ret; } @@ -3803,7 +3769,7 @@ doCoreDump(virQEMUDriverPtr driver, unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING; const char *memory_dump_format = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; /* We reuse "save" flag for "dump" here. Then, we can support the same * format in "save" and "dump". This path doesn't need the compression @@ -3883,7 +3849,6 @@ doCoreDump(virQEMUDriverPtr driver, virFileWrapperFdFree(wrapperFd); if (ret != 0) unlink(path); - VIR_FREE(compressedpath); return ret; } @@ -4009,7 +3974,7 @@ qemuDomainScreenshot(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; - char *tmp = NULL; + VIR_AUTOFREE(char *) tmp = NULL; int tmp_fd = -1; size_t i; const char *videoAlias = NULL; @@ -4101,7 +4066,6 @@ qemuDomainScreenshot(virDomainPtr dom, VIR_FORCE_CLOSE(tmp_fd); if (unlink_tmp) unlink(tmp); - VIR_FREE(tmp); qemuDomainObjEndJob(driver, vm); @@ -4115,7 +4079,7 @@ getAutoDumpPath(virQEMUDriverPtr driver, virDomainObjPtr vm) { char *dumpfile = NULL; - char *domname = virDomainDefGetShortName(vm->def); + VIR_AUTOFREE(char *domname) = virDomainDefGetShortName(vm->def); char timestr[100]; struct tm time_info; time_t curtime = time(NULL); @@ -4134,7 +4098,6 @@ getAutoDumpPath(virQEMUDriverPtr driver, domname, timestr)); - VIR_FREE(domname); return dumpfile; } -- 2.21.0

On Tue, Oct 15, 2019 at 05:08:48PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label.
These patches would look much better split by: * individual functions (in case you do rework multiple things at once) * individual changes, i.e. * g_autofree for scalars * g_autoptr for pointers and unref * possible removal of cleanup labels Especially splitting the goto -> return change makes the patches much more easier to read, since it makes it obvious that you don't change the exit points of the function while adding the autofree attributes. Jano
This is a huge change due to the amount of char * declared in this file, thus let's split it in 3. This is the first part.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 103 +++++++++++++---------------------------- 1 file changed, 33 insertions(+), 70 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d95c5c5b81..f887a79ecd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -381,11 +381,9 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - char *snapDir = NULL; + VIR_AUTOFREE(char *) snapDir = NULL; DIR *dir = NULL; struct dirent *entry; - char *xmlStr; - char *fullpath; virDomainSnapshotDefPtr def = NULL; virDomainMomentObjPtr snap = NULL; virDomainMomentObjPtr current = NULL; @@ -420,6 +418,9 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, goto cleanup;
while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { + VIR_AUTOFREE(char *) xmlStr = NULL; + VIR_AUTOFREE(char *) fullpath = NULL; + /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ VIR_INFO("Loading snapshot file '%s'", entry->d_name); @@ -435,7 +436,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, virReportSystemError(errno, _("Failed to read snapshot file %s"), fullpath); - VIR_FREE(fullpath); continue; }
@@ -448,8 +448,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse snapshot XML from file '%s'"), fullpath); - VIR_FREE(fullpath); - VIR_FREE(xmlStr); continue; }
@@ -463,9 +461,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, vm->def->name); current = snap; } - - VIR_FREE(fullpath); - VIR_FREE(xmlStr); } if (direrr < 0) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -492,7 +487,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, ret = 0; cleanup: VIR_DIR_CLOSE(dir); - VIR_FREE(snapDir); virObjectUnlock(vm); return ret; } @@ -503,11 +497,9 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - char *chkDir = NULL; + VIR_AUTOFREE(char *) chkDir = NULL; DIR *dir = NULL; struct dirent *entry; - char *xmlStr; - char *fullpath; virDomainCheckpointDefPtr def = NULL; virDomainMomentObjPtr chk = NULL; virDomainMomentObjPtr current = NULL; @@ -538,6 +530,9 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, goto cleanup;
while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { + VIR_AUTOFREE(char *) xmlStr = NULL; + VIR_AUTOFREE(char *) fullpath = NULL; + /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ VIR_INFO("Loading checkpoint file '%s'", entry->d_name); @@ -553,7 +548,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virReportSystemError(errno, _("Failed to read checkpoint file %s"), fullpath); - VIR_FREE(fullpath); continue; }
@@ -566,8 +560,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse checkpoint XML from file '%s'"), fullpath); - VIR_FREE(fullpath); - VIR_FREE(xmlStr); virObjectUnref(def); continue; } @@ -575,9 +567,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, chk = virDomainCheckpointAssignDef(vm->checkpoints, def); if (chk == NULL) virObjectUnref(def); - - VIR_FREE(fullpath); - VIR_FREE(xmlStr); } if (direrr < 0) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -602,7 +591,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, ret = 0; cleanup: VIR_DIR_CLOSE(dir); - VIR_FREE(chkDir); virObjectUnlock(vm); return ret; } @@ -660,12 +648,11 @@ qemuStateInitialize(bool privileged, virStateInhibitCallback callback, void *opaque) { - char *driverConf = NULL; + VIR_AUTOFREE(char *) driverConf = NULL; virQEMUDriverConfigPtr cfg; uid_t run_uid = -1; gid_t run_gid = -1; - char *hugepagePath = NULL; - char *memoryBackingPath = NULL; + VIR_AUTOFREE(char *) memoryBackingPath = NULL; bool autostart = true; size_t i;
@@ -706,7 +693,6 @@ qemuStateInitialize(bool privileged,
if (virQEMUDriverConfigLoadFile(cfg, driverConf, privileged) < 0) goto error; - VIR_FREE(driverConf);
if (virQEMUDriverConfigValidate(cfg) < 0) goto error; @@ -830,7 +816,7 @@ qemuStateInitialize(bool privileged, goto error;
if (privileged) { - char *channeldir; + VIR_AUTOFREE(char *) channeldir = NULL;
if (chown(cfg->libDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, @@ -883,10 +869,8 @@ qemuStateInitialize(bool privileged, _("unable to set ownership of '%s' to %d:%d"), channeldir, (int)cfg->user, (int)cfg->group); - VIR_FREE(channeldir); goto error; } - VIR_FREE(channeldir); if (chown(cfg->channelTargetDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, _("unable to set ownership of '%s' to %d:%d"), @@ -937,6 +921,8 @@ qemuStateInitialize(bool privileged, * it, since we can't assume the root mount point has permissions that * will let our spawned QEMU instances use it. */ for (i = 0; i < cfg->nhugetlbfs; i++) { + VIR_AUTOFREE(char *) hugepagePath = NULL; + hugepagePath = qemuGetBaseHugepagePath(&cfg->hugetlbfs[i]);
if (!hugepagePath) @@ -952,7 +938,6 @@ qemuStateInitialize(bool privileged, virFileUpdatePerm(cfg->hugetlbfs[i].mnt_dir, 0, S_IXGRP | S_IXOTH) < 0) goto error; - VIR_FREE(hugepagePath); }
if (qemuGetMemoryBackingBasePath(cfg, &memoryBackingPath) < 0) @@ -969,7 +954,6 @@ qemuStateInitialize(bool privileged, virFileUpdatePerm(memoryBackingPath, 0, S_IXGRP | S_IXOTH) < 0) goto error; - VIR_FREE(memoryBackingPath);
if (!(qemu_driver->closeCallbacks = virCloseCallbacksNew())) goto error; @@ -1038,9 +1022,6 @@ qemuStateInitialize(bool privileged, return VIR_DRV_STATE_INIT_COMPLETE;
error: - VIR_FREE(driverConf); - VIR_FREE(hugepagePath); - VIR_FREE(memoryBackingPath); qemuStateCleanup(); return VIR_DRV_STATE_INIT_ERROR; } @@ -1365,8 +1346,8 @@ static int qemuGetSchedInfo(unsigned long long *cpuWait, pid_t pid, pid_t tid) { - char *proc = NULL; - char *data = NULL; + VIR_AUTOFREE(char *) proc = NULL; + VIR_AUTOFREE(char *) data = NULL; char **lines = NULL; size_t i; int ret = -1; @@ -1430,8 +1411,6 @@ qemuGetSchedInfo(unsigned long long *cpuWait, ret = 0;
cleanup: - VIR_FREE(data); - VIR_FREE(proc); virStringListFree(lines); return ret; } @@ -1441,7 +1420,7 @@ static int qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, pid_t pid, int tid) { - char *proc; + VIR_AUTOFREE(char *) proc = NULL; FILE *pidinfo; unsigned long long usertime = 0, systime = 0; long rss = 0; @@ -1458,7 +1437,6 @@ qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, return -1;
pidinfo = fopen(proc, "r"); - VIR_FREE(proc);
/* See 'man proc' for information about what all these fields are. We're * only interested in a very few of them */ @@ -2910,9 +2888,8 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, size_t len; size_t xml_len; size_t cookie_len = 0; - int ret = -1; size_t zerosLen = 0; - char *zeros = NULL; + VIR_AUTOFREE(char *) zeros = NULL;
xml_len = strlen(data->xml) + 1; if (data->cookie) @@ -2924,12 +2901,12 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, if (len > header->data_len) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("new xml too large to fit in file")); - goto cleanup; + return -1; }
zerosLen = header->data_len - len; if (VIR_ALLOC_N(zeros, zerosLen) < 0) - goto cleanup; + return -1; } else { header->data_len = len; } @@ -2941,14 +2918,14 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, virReportSystemError(errno, _("failed to write header to domain save file '%s'"), path); - goto cleanup; + return -1; }
if (safewrite(fd, data->xml, xml_len) != xml_len) { virReportSystemError(errno, _("failed to write domain xml to '%s'"), path); - goto cleanup; + return -1; }
if (data->cookie && @@ -2956,21 +2933,17 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, virReportSystemError(errno, _("failed to write cookie to '%s'"), path); - goto cleanup; + return -1; }
if (safewrite(fd, zeros, zerosLen) != zerosLen) { virReportSystemError(errno, _("failed to write padding to '%s'"), path); - goto cleanup; + return -1; }
- ret = 0; - - cleanup: - VIR_FREE(zeros); - return ret; + return 0; }
@@ -3300,7 +3273,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, int compressed, const char *compressedpath, const char *xmlin, unsigned int flags) { - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; bool was_running = false; int ret = -1; virObjectEventPtr event = NULL; @@ -3381,7 +3354,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, if (!(data = virQEMUSaveDataNew(xml, cookie, was_running, compressed, driver->xmlopt))) goto endjob; - xml = NULL;
ret = qemuDomainSaveMemory(driver, vm, path, data, compressedpath, flags, QEMU_ASYNC_JOB_SAVE); @@ -3416,7 +3388,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, qemuDomainRemoveInactiveJob(driver, vm);
cleanup: - VIR_FREE(xml); virQEMUSaveDataFree(data); virObjectEventStateQueue(driver->domainEventState, event); return ret; @@ -3504,7 +3475,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, { virQEMUDriverPtr driver = dom->conn->privateData; int compressed; - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; int ret = -1; virDomainObjPtr vm = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; @@ -3533,7 +3504,6 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml,
cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(compressedpath); return ret; }
@@ -3561,9 +3531,9 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; int compressed; - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; virDomainObjPtr vm; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL; int ret = -1;
virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | @@ -3603,8 +3573,6 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags)
cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(name); - VIR_FREE(compressedpath);
return ret; } @@ -3614,7 +3582,7 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, void *opaque) { virQEMUDriverPtr driver = opaque; - char *name; + VIR_AUTOFREE(char *) name = NULL; int ret = -1;
virObjectLock(vm); @@ -3627,7 +3595,6 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, ret = 0; cleanup: virObjectUnlock(vm); - VIR_FREE(name); return ret; }
@@ -3659,7 +3626,7 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; int ret = -1; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL;
virCheckFlags(0, -1);
@@ -3683,7 +3650,6 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) ret = 0;
cleanup: - VIR_FREE(name); virDomainObjEndAPI(&vm); return ret; } @@ -3803,7 +3769,7 @@ doCoreDump(virQEMUDriverPtr driver, unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING; const char *memory_dump_format = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL;
/* We reuse "save" flag for "dump" here. Then, we can support the same * format in "save" and "dump". This path doesn't need the compression @@ -3883,7 +3849,6 @@ doCoreDump(virQEMUDriverPtr driver, virFileWrapperFdFree(wrapperFd); if (ret != 0) unlink(path); - VIR_FREE(compressedpath); return ret; }
@@ -4009,7 +3974,7 @@ qemuDomainScreenshot(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; - char *tmp = NULL; + VIR_AUTOFREE(char *) tmp = NULL; int tmp_fd = -1; size_t i; const char *videoAlias = NULL; @@ -4101,7 +4066,6 @@ qemuDomainScreenshot(virDomainPtr dom, VIR_FORCE_CLOSE(tmp_fd); if (unlink_tmp) unlink(tmp); - VIR_FREE(tmp);
qemuDomainObjEndJob(driver, vm);
@@ -4115,7 +4079,7 @@ getAutoDumpPath(virQEMUDriverPtr driver, virDomainObjPtr vm) { char *dumpfile = NULL; - char *domname = virDomainDefGetShortName(vm->def); + VIR_AUTOFREE(char *domname) = virDomainDefGetShortName(vm->def); char timestr[100]; struct tm time_info; time_t curtime = time(NULL); @@ -4134,7 +4098,6 @@ getAutoDumpPath(virQEMUDriverPtr driver, domname, timestr));
- VIR_FREE(domname); return dumpfile; }
-- 2.21.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On 10/16/19 10:49 AM, Ján Tomko wrote:
On Tue, Oct 15, 2019 at 05:08:48PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label.
These patches would look much better split by: * individual functions (in case you do rework multiple things at once)
Do you mean sending an individual patch for any function that might have, say, 2+ changes in it? For example, if the same function was changed to use g_autoptr and g_autofree and perhaps that causes a label to be dropped, this can be an individual patch?
* individual changes, i.e. * g_autofree for scalars * g_autoptr for pointers and unref * possible removal of cleanup labels
Got it. I'll reorganize the changes and send it this way.
Especially splitting the goto -> return change makes the patches much more easier to read, since it makes it obvious that you don't change the exit points of the function while adding the autofree attributes.
Jano
This is a huge change due to the amount of char * declared in this file, thus let's split it in 3. This is the first part.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 103 +++++++++++++---------------------------- 1 file changed, 33 insertions(+), 70 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d95c5c5b81..f887a79ecd 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -381,11 +381,9 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - char *snapDir = NULL; + VIR_AUTOFREE(char *) snapDir = NULL; DIR *dir = NULL; struct dirent *entry; - char *xmlStr; - char *fullpath; virDomainSnapshotDefPtr def = NULL; virDomainMomentObjPtr snap = NULL; virDomainMomentObjPtr current = NULL; @@ -420,6 +418,9 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, goto cleanup;
while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { + VIR_AUTOFREE(char *) xmlStr = NULL; + VIR_AUTOFREE(char *) fullpath = NULL; + /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ VIR_INFO("Loading snapshot file '%s'", entry->d_name); @@ -435,7 +436,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, virReportSystemError(errno, _("Failed to read snapshot file %s"), fullpath); - VIR_FREE(fullpath); continue; }
@@ -448,8 +448,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse snapshot XML from file '%s'"), fullpath); - VIR_FREE(fullpath); - VIR_FREE(xmlStr); continue; }
@@ -463,9 +461,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, vm->def->name); current = snap; } - - VIR_FREE(fullpath); - VIR_FREE(xmlStr); } if (direrr < 0) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -492,7 +487,6 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, ret = 0; cleanup: VIR_DIR_CLOSE(dir); - VIR_FREE(snapDir); virObjectUnlock(vm); return ret; } @@ -503,11 +497,9 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - char *chkDir = NULL; + VIR_AUTOFREE(char *) chkDir = NULL; DIR *dir = NULL; struct dirent *entry; - char *xmlStr; - char *fullpath; virDomainCheckpointDefPtr def = NULL; virDomainMomentObjPtr chk = NULL; virDomainMomentObjPtr current = NULL; @@ -538,6 +530,9 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, goto cleanup;
while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { + VIR_AUTOFREE(char *) xmlStr = NULL; + VIR_AUTOFREE(char *) fullpath = NULL; + /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ VIR_INFO("Loading checkpoint file '%s'", entry->d_name); @@ -553,7 +548,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virReportSystemError(errno, _("Failed to read checkpoint file %s"), fullpath); - VIR_FREE(fullpath); continue; }
@@ -566,8 +560,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virReportError(VIR_ERR_INTERNAL_ERROR, _("Failed to parse checkpoint XML from file '%s'"), fullpath); - VIR_FREE(fullpath); - VIR_FREE(xmlStr); virObjectUnref(def); continue; } @@ -575,9 +567,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, chk = virDomainCheckpointAssignDef(vm->checkpoints, def); if (chk == NULL) virObjectUnref(def); - - VIR_FREE(fullpath); - VIR_FREE(xmlStr); } if (direrr < 0) virReportError(VIR_ERR_INTERNAL_ERROR, @@ -602,7 +591,6 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, ret = 0; cleanup: VIR_DIR_CLOSE(dir); - VIR_FREE(chkDir); virObjectUnlock(vm); return ret; } @@ -660,12 +648,11 @@ qemuStateInitialize(bool privileged, virStateInhibitCallback callback, void *opaque) { - char *driverConf = NULL; + VIR_AUTOFREE(char *) driverConf = NULL; virQEMUDriverConfigPtr cfg; uid_t run_uid = -1; gid_t run_gid = -1; - char *hugepagePath = NULL; - char *memoryBackingPath = NULL; + VIR_AUTOFREE(char *) memoryBackingPath = NULL; bool autostart = true; size_t i;
@@ -706,7 +693,6 @@ qemuStateInitialize(bool privileged,
if (virQEMUDriverConfigLoadFile(cfg, driverConf, privileged) < 0) goto error; - VIR_FREE(driverConf);
if (virQEMUDriverConfigValidate(cfg) < 0) goto error; @@ -830,7 +816,7 @@ qemuStateInitialize(bool privileged, goto error;
if (privileged) { - char *channeldir; + VIR_AUTOFREE(char *) channeldir = NULL;
if (chown(cfg->libDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, @@ -883,10 +869,8 @@ qemuStateInitialize(bool privileged, _("unable to set ownership of '%s' to %d:%d"), channeldir, (int)cfg->user, (int)cfg->group); - VIR_FREE(channeldir); goto error; } - VIR_FREE(channeldir); if (chown(cfg->channelTargetDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, _("unable to set ownership of '%s' to %d:%d"), @@ -937,6 +921,8 @@ qemuStateInitialize(bool privileged, * it, since we can't assume the root mount point has permissions that * will let our spawned QEMU instances use it. */ for (i = 0; i < cfg->nhugetlbfs; i++) { + VIR_AUTOFREE(char *) hugepagePath = NULL; + hugepagePath = qemuGetBaseHugepagePath(&cfg->hugetlbfs[i]);
if (!hugepagePath) @@ -952,7 +938,6 @@ qemuStateInitialize(bool privileged, virFileUpdatePerm(cfg->hugetlbfs[i].mnt_dir, 0, S_IXGRP | S_IXOTH) < 0) goto error; - VIR_FREE(hugepagePath); }
if (qemuGetMemoryBackingBasePath(cfg, &memoryBackingPath) < 0) @@ -969,7 +954,6 @@ qemuStateInitialize(bool privileged, virFileUpdatePerm(memoryBackingPath, 0, S_IXGRP | S_IXOTH) < 0) goto error; - VIR_FREE(memoryBackingPath);
if (!(qemu_driver->closeCallbacks = virCloseCallbacksNew())) goto error; @@ -1038,9 +1022,6 @@ qemuStateInitialize(bool privileged, return VIR_DRV_STATE_INIT_COMPLETE;
error: - VIR_FREE(driverConf); - VIR_FREE(hugepagePath); - VIR_FREE(memoryBackingPath); qemuStateCleanup(); return VIR_DRV_STATE_INIT_ERROR; } @@ -1365,8 +1346,8 @@ static int qemuGetSchedInfo(unsigned long long *cpuWait, pid_t pid, pid_t tid) { - char *proc = NULL; - char *data = NULL; + VIR_AUTOFREE(char *) proc = NULL; + VIR_AUTOFREE(char *) data = NULL; char **lines = NULL; size_t i; int ret = -1; @@ -1430,8 +1411,6 @@ qemuGetSchedInfo(unsigned long long *cpuWait, ret = 0;
cleanup: - VIR_FREE(data); - VIR_FREE(proc); virStringListFree(lines); return ret; } @@ -1441,7 +1420,7 @@ static int qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, pid_t pid, int tid) { - char *proc; + VIR_AUTOFREE(char *) proc = NULL; FILE *pidinfo; unsigned long long usertime = 0, systime = 0; long rss = 0; @@ -1458,7 +1437,6 @@ qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, return -1;
pidinfo = fopen(proc, "r"); - VIR_FREE(proc);
/* See 'man proc' for information about what all these fields are. We're * only interested in a very few of them */ @@ -2910,9 +2888,8 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, size_t len; size_t xml_len; size_t cookie_len = 0; - int ret = -1; size_t zerosLen = 0; - char *zeros = NULL; + VIR_AUTOFREE(char *) zeros = NULL;
xml_len = strlen(data->xml) + 1; if (data->cookie) @@ -2924,12 +2901,12 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, if (len > header->data_len) { virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("new xml too large to fit in file")); - goto cleanup; + return -1; }
zerosLen = header->data_len - len; if (VIR_ALLOC_N(zeros, zerosLen) < 0) - goto cleanup; + return -1; } else { header->data_len = len; } @@ -2941,14 +2918,14 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, virReportSystemError(errno, _("failed to write header to domain save file '%s'"), path); - goto cleanup; + return -1; }
if (safewrite(fd, data->xml, xml_len) != xml_len) { virReportSystemError(errno, _("failed to write domain xml to '%s'"), path); - goto cleanup; + return -1; }
if (data->cookie && @@ -2956,21 +2933,17 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, virReportSystemError(errno, _("failed to write cookie to '%s'"), path); - goto cleanup; + return -1; }
if (safewrite(fd, zeros, zerosLen) != zerosLen) { virReportSystemError(errno, _("failed to write padding to '%s'"), path); - goto cleanup; + return -1; }
- ret = 0; - - cleanup: - VIR_FREE(zeros); - return ret; + return 0; }
@@ -3300,7 +3273,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, int compressed, const char *compressedpath, const char *xmlin, unsigned int flags) { - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; bool was_running = false; int ret = -1; virObjectEventPtr event = NULL; @@ -3381,7 +3354,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, if (!(data = virQEMUSaveDataNew(xml, cookie, was_running, compressed, driver->xmlopt))) goto endjob; - xml = NULL;
ret = qemuDomainSaveMemory(driver, vm, path, data, compressedpath, flags, QEMU_ASYNC_JOB_SAVE); @@ -3416,7 +3388,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, qemuDomainRemoveInactiveJob(driver, vm);
cleanup: - VIR_FREE(xml); virQEMUSaveDataFree(data); virObjectEventStateQueue(driver->domainEventState, event); return ret; @@ -3504,7 +3475,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, { virQEMUDriverPtr driver = dom->conn->privateData; int compressed; - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; int ret = -1; virDomainObjPtr vm = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; @@ -3533,7 +3504,6 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml,
cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(compressedpath); return ret; }
@@ -3561,9 +3531,9 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; int compressed; - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL; virDomainObjPtr vm; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL; int ret = -1;
virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | @@ -3603,8 +3573,6 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags)
cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(name); - VIR_FREE(compressedpath);
return ret; } @@ -3614,7 +3582,7 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, void *opaque) { virQEMUDriverPtr driver = opaque; - char *name; + VIR_AUTOFREE(char *) name = NULL; int ret = -1;
virObjectLock(vm); @@ -3627,7 +3595,6 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, ret = 0; cleanup: virObjectUnlock(vm); - VIR_FREE(name); return ret; }
@@ -3659,7 +3626,7 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; int ret = -1; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL;
virCheckFlags(0, -1);
@@ -3683,7 +3650,6 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) ret = 0;
cleanup: - VIR_FREE(name); virDomainObjEndAPI(&vm); return ret; } @@ -3803,7 +3769,7 @@ doCoreDump(virQEMUDriverPtr driver, unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING; const char *memory_dump_format = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - char *compressedpath = NULL; + VIR_AUTOFREE(char *) compressedpath = NULL;
/* We reuse "save" flag for "dump" here. Then, we can support the same * format in "save" and "dump". This path doesn't need the compression @@ -3883,7 +3849,6 @@ doCoreDump(virQEMUDriverPtr driver, virFileWrapperFdFree(wrapperFd); if (ret != 0) unlink(path); - VIR_FREE(compressedpath); return ret; }
@@ -4009,7 +3974,7 @@ qemuDomainScreenshot(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; - char *tmp = NULL; + VIR_AUTOFREE(char *) tmp = NULL; int tmp_fd = -1; size_t i; const char *videoAlias = NULL; @@ -4101,7 +4066,6 @@ qemuDomainScreenshot(virDomainPtr dom, VIR_FORCE_CLOSE(tmp_fd); if (unlink_tmp) unlink(tmp); - VIR_FREE(tmp);
qemuDomainObjEndJob(driver, vm);
@@ -4115,7 +4079,7 @@ getAutoDumpPath(virQEMUDriverPtr driver, virDomainObjPtr vm) { char *dumpfile = NULL; - char *domname = virDomainDefGetShortName(vm->def); + VIR_AUTOFREE(char *domname) = virDomainDefGetShortName(vm->def); char timestr[100]; struct tm time_info; time_t curtime = time(NULL); @@ -4134,7 +4098,6 @@ getAutoDumpPath(virQEMUDriverPtr driver, domname, timestr));
- VIR_FREE(domname); return dumpfile; }
-- 2.21.0
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Wed, Oct 16, 2019 at 11:14:05AM -0300, Daniel Henrique Barboza wrote:
On 10/16/19 10:49 AM, Ján Tomko wrote:
On Tue, Oct 15, 2019 at 05:08:48PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label.
These patches would look much better split by: * individual functions (in case you do rework multiple things at once)
Do you mean sending an individual patch for any function that might have, say, 2+ changes in it? For example, if the same function was changed to use g_autoptr and g_autofree and perhaps that causes a label to be dropped, this can be an individual patch?
Yes, but if you convert a lot of functions, that would result in a lot of patches. Sending one patch per function is more viable for the cases where you need to refactor it in order to add some functionality later (see Jirka's series for example). For mass conversion for the sake of conversion, one patch per change is better. Jano
* individual changes, i.e. * g_autofree for scalars * g_autoptr for pointers and unref * possible removal of cleanup labels

On 10/16/19 11:28 AM, Ján Tomko wrote:
On Wed, Oct 16, 2019 at 11:14:05AM -0300, Daniel Henrique Barboza wrote:
On 10/16/19 10:49 AM, Ján Tomko wrote:
On Tue, Oct 15, 2019 at 05:08:48PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label.
These patches would look much better split by: * individual functions (in case you do rework multiple things at once)
Do you mean sending an individual patch for any function that might have, say, 2+ changes in it? For example, if the same function was changed to use g_autoptr and g_autofree and perhaps that causes a label to be dropped, this can be an individual patch?
Yes, but if you convert a lot of functions, that would result in a lot of patches.
Just checked. There's just a couple of functions I messed around in a non-trivial way (moved string declarations inside loops to avoid a VIR_FREE call, lots of VIR_FREE calls being removed and so on). I can send them in separated patches (perhaps both in the same patch, I think the functions are related), then proceed with the more trivial changes of inserting g_autoptr, g_autofree and removing labels in separated patches each. DHB
Sending one patch per function is more viable for the cases where you need to refactor it in order to add some functionality later (see Jirka's series for example). For mass conversion for the sake of conversion, one patch per change is better.
Jano
* individual changes, i.e. * g_autofree for scalars * g_autoptr for pointers and unref * possible removal of cleanup labels

Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label. This is a huge change due to the amount of char * declared in this file, thus let's split it in 3. This is the second part. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 86 +++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 56 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f887a79ecd..f3fccc0843 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -4108,11 +4108,11 @@ processWatchdogEvent(virQEMUDriverPtr driver, { int ret; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - char *dumpfile = getAutoDumpPath(driver, vm); + VIR_AUTOFREE(char *) dumpfile = getAutoDumpPath(driver, vm); unsigned int flags = VIR_DUMP_MEMORY_ONLY; if (!dumpfile) - goto cleanup; + return; switch (action) { case VIR_DOMAIN_WATCHDOG_ACTION_DUMP: @@ -4120,7 +4120,7 @@ processWatchdogEvent(virQEMUDriverPtr driver, QEMU_ASYNC_JOB_DUMP, VIR_DOMAIN_JOB_OPERATION_DUMP, flags) < 0) { - goto cleanup; + return; } if (virDomainObjCheckActive(vm) < 0) @@ -4141,14 +4141,11 @@ processWatchdogEvent(virQEMUDriverPtr driver, "%s", _("Resuming after dump failed")); break; default: - goto cleanup; + return; } endjob: qemuDomainObjEndAsyncJob(driver, vm); - - cleanup: - VIR_FREE(dumpfile); } static int @@ -4158,18 +4155,16 @@ doCoreDumpToAutoDumpPath(virQEMUDriverPtr driver, { int ret = -1; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - char *dumpfile = getAutoDumpPath(driver, vm); + VIR_AUTOFREE(char *) dumpfile = getAutoDumpPath(driver, vm); if (!dumpfile) - goto cleanup; + return -1; flags |= cfg->autoDumpBypassCache ? VIR_DUMP_BYPASS_CACHE: 0; if ((ret = doCoreDump(driver, vm, dumpfile, flags, VIR_DOMAIN_CORE_DUMP_FORMAT_RAW)) < 0) virReportError(VIR_ERR_OPERATION_FAILED, "%s", _("Dump failed")); - cleanup: - VIR_FREE(dumpfile); return ret; } @@ -4179,14 +4174,11 @@ qemuProcessGuestPanicEventInfo(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuMonitorEventPanicInfoPtr info) { - char *msg = qemuMonitorGuestPanicEventInfoFormatMsg(info); - char *timestamp = virTimeStringNow(); + VIR_AUTOFREE(char *) msg = qemuMonitorGuestPanicEventInfoFormatMsg(info); + VIR_AUTOFREE(char *) timestamp = virTimeStringNow(); if (msg && timestamp) qemuDomainLogAppendMessage(driver, vm, "%s: panic %s\n", timestamp, msg); - - VIR_FREE(timestamp); - VIR_FREE(msg); } @@ -5082,7 +5074,7 @@ qemuDomainPinVcpuLive(virDomainObjPtr vm, virDomainVcpuDefPtr vcpuinfo; qemuDomainObjPrivatePtr priv = vm->privateData; virCgroupPtr cgroup_vcpu = NULL; - char *str = NULL; + VIR_AUTOFREE(char *) str = NULL; virObjectEventPtr event = NULL; char paramField[VIR_TYPED_PARAM_FIELD_LENGTH] = ""; virTypedParameterPtr eventParams = NULL; @@ -5146,7 +5138,6 @@ qemuDomainPinVcpuLive(virDomainObjPtr vm, cleanup: virBitmapFree(tmpmap); virCgroupFree(&cgroup_vcpu); - VIR_FREE(str); virObjectEventStateQueue(driver->domainEventState, event); return ret; } @@ -5287,7 +5278,7 @@ qemuDomainPinEmulator(virDomainPtr dom, virBitmapPtr pcpumap = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; virObjectEventPtr event = NULL; - char *str = NULL; + VIR_AUTOFREE(char *) str = NULL; virTypedParameterPtr eventParams = NULL; int eventNparams = 0; int eventMaxparams = 0; @@ -5376,7 +5367,6 @@ qemuDomainPinEmulator(virDomainPtr dom, if (cgroup_emulator) virCgroupFree(&cgroup_emulator); virObjectEventStateQueue(driver->domainEventState, event); - VIR_FREE(str); virBitmapFree(pcpumap); virDomainObjEndAPI(&vm); return ret; @@ -5758,7 +5748,7 @@ qemuDomainPinIOThread(virDomainPtr dom, virCgroupPtr cgroup_iothread = NULL; virObjectEventPtr event = NULL; char paramField[VIR_TYPED_PARAM_FIELD_LENGTH] = ""; - char *str = NULL; + VIR_AUTOFREE(char *) str = NULL; virTypedParameterPtr eventParams = NULL; int eventNparams = 0; int eventMaxparams = 0; @@ -5870,7 +5860,6 @@ qemuDomainPinIOThread(virDomainPtr dom, if (cgroup_iothread) virCgroupFree(&cgroup_iothread); virObjectEventStateQueue(driver->domainEventState, event); - VIR_FREE(str); virBitmapFree(pcpumap); virDomainObjEndAPI(&vm); return ret; @@ -5882,7 +5871,7 @@ qemuDomainHotplugAddIOThread(virQEMUDriverPtr driver, unsigned int iothread_id) { qemuDomainObjPrivatePtr priv = vm->privateData; - char *alias = NULL; + VIR_AUTOFREE(char *) alias = NULL; size_t idx; int ret = -1; unsigned int orig_niothreads = vm->def->niothreadids; @@ -5958,7 +5947,6 @@ qemuDomainHotplugAddIOThread(virQEMUDriverPtr driver, } virDomainAuditIOThread(vm, orig_niothreads, new_niothreads, "update", ret == 0); - VIR_FREE(alias); virJSONValueFree(props); return ret; @@ -6003,7 +5991,7 @@ qemuDomainHotplugDelIOThread(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; size_t idx; - char *alias = NULL; + VIR_AUTOFREE(char *) alias = NULL; int rc = -1; int ret = -1; unsigned int orig_niothreads = vm->def->niothreadids; @@ -6052,7 +6040,6 @@ qemuDomainHotplugDelIOThread(virQEMUDriverPtr driver, } virDomainAuditIOThread(vm, orig_niothreads, new_niothreads, "update", rc == 0); - VIR_FREE(alias); return ret; exit_monitor: @@ -6822,7 +6809,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, virObjectEventPtr event; int intermediatefd = -1; virCommandPtr cmd = NULL; - char *errbuf = NULL; + VIR_AUTOFREE(char *) errbuf = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virQEMUSaveHeaderPtr header = &data->header; VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; @@ -6941,7 +6928,6 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, cleanup: virCommandFree(cmd); - VIR_FREE(errbuf); if (qemuSecurityRestoreSavedStateLabel(driver, vm, path) < 0) VIR_WARN("failed to restore save state label on %s", path); return ret; @@ -6957,7 +6943,7 @@ qemuDomainRestoreFlags(virConnectPtr conn, qemuDomainObjPrivatePtr priv = NULL; virDomainDefPtr def = NULL; virDomainObjPtr vm = NULL; - char *xmlout = NULL; + VIR_AUTOFREE(char *) xmlout = NULL; const char *newxml = dxml; int fd = -1; int ret = -1; @@ -7042,7 +7028,6 @@ qemuDomainRestoreFlags(virConnectPtr conn, ret = -1; virFileWrapperFdFree(wrapperFd); virQEMUSaveDataFree(data); - VIR_FREE(xmlout); if (vm && ret < 0) qemuDomainRemoveInactiveJob(driver, vm); virDomainObjEndAPI(&vm); @@ -7165,7 +7150,7 @@ qemuDomainManagedSaveGetXMLDesc(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - char *path = NULL; + VIR_AUTOFREE(char *) path = NULL; char *ret = NULL; virDomainDefPtr def = NULL; int fd = -1; @@ -7202,7 +7187,6 @@ qemuDomainManagedSaveGetXMLDesc(virDomainPtr dom, unsigned int flags) virDomainDefFree(def); VIR_FORCE_CLOSE(fd); virDomainObjEndAPI(&vm); - VIR_FREE(path); return ret; } @@ -7213,7 +7197,7 @@ qemuDomainManagedSaveDefineXML(virDomainPtr dom, const char *dxml, virQEMUDriverPtr driver = dom->conn->privateData; virConnectPtr conn = dom->conn; virDomainObjPtr vm; - char *path = NULL; + VIR_AUTOFREE(char *) path = NULL; int ret = -1; if (!(vm = qemuDomainObjFromDomain(dom))) @@ -7235,7 +7219,6 @@ qemuDomainManagedSaveDefineXML(virDomainPtr dom, const char *dxml, cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(path); return ret; } @@ -7254,7 +7237,7 @@ qemuDomainObjRestore(virConnectPtr conn, qemuDomainObjPrivatePtr priv = vm->privateData; int fd = -1; int ret = -1; - char *xmlout = NULL; + VIR_AUTOFREE(char *) xmlout = NULL; virQEMUSaveDataPtr data = NULL; virFileWrapperFdPtr wrapperFd = NULL; @@ -7311,7 +7294,6 @@ qemuDomainObjRestore(virConnectPtr conn, cleanup: virQEMUSaveDataFree(data); - VIR_FREE(xmlout); virDomainDefFree(def); VIR_FORCE_CLOSE(fd); if (virFileWrapperFdClose(wrapperFd) < 0) @@ -7476,7 +7458,7 @@ qemuDomainObjStart(virConnectPtr conn, qemuDomainAsyncJob asyncJob) { int ret = -1; - char *managed_save; + VIR_AUTOFREE(char *) managed_save = NULL; bool start_paused = (flags & VIR_DOMAIN_START_PAUSED) != 0; bool autodestroy = (flags & VIR_DOMAIN_START_AUTODESTROY) != 0; bool bypass_cache = (flags & VIR_DOMAIN_START_BYPASS_CACHE) != 0; @@ -7494,7 +7476,7 @@ qemuDomainObjStart(virConnectPtr conn, managed_save = qemuDomainManagedSavePath(driver, vm); if (!managed_save) - goto cleanup; + return ret; if (virFileExists(managed_save)) { if (force_boot) { @@ -7502,7 +7484,7 @@ qemuDomainObjStart(virConnectPtr conn, virReportSystemError(errno, _("cannot remove managed save file %s"), managed_save); - goto cleanup; + return ret; } vm->hasManagedSave = false; } else { @@ -7518,11 +7500,11 @@ qemuDomainObjStart(virConnectPtr conn, else vm->hasManagedSave = false; - goto cleanup; + return ret; } else if (ret < 0) { VIR_WARN("Unable to restore from managed state %s. " "Maybe the file is corrupted?", managed_save); - goto cleanup; + return ret; } else { VIR_WARN("Ignoring incomplete managed state %s", managed_save); priv->job.current->operation = op; @@ -7549,8 +7531,6 @@ qemuDomainObjStart(virConnectPtr conn, } } - cleanup: - VIR_FREE(managed_save); return ret; } @@ -7698,7 +7678,7 @@ qemuDomainUndefineFlags(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; virObjectEventPtr event = NULL; - char *name = NULL; + VIR_AUTOFREE(char *) name = NULL; int ret = -1; int nsnapshots; int ncheckpoints; @@ -7827,7 +7807,6 @@ qemuDomainUndefineFlags(virDomainPtr dom, qemuDomainObjEndJob(driver, vm); cleanup: - VIR_FREE(name); virDomainObjEndAPI(&vm); virObjectEventStateQueue(driver->domainEventState, event); return ret; @@ -9165,7 +9144,8 @@ static int qemuDomainSetAutostart(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - char *configFile = NULL, *autostartLink = NULL; + VIR_AUTOFREE(char *) configFile = NULL; + VIR_AUTOFREE(char *) autostartLink = NULL; int ret = -1; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; @@ -9229,8 +9209,6 @@ static int qemuDomainSetAutostart(virDomainPtr dom, ret = 0; cleanup: - VIR_FREE(configFile); - VIR_FREE(autostartLink); virDomainObjEndAPI(&vm); return ret; } @@ -10010,7 +9988,7 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm, { virCgroupPtr cgroup_temp = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; - char *nodeset_str = NULL; + VIR_AUTOFREE(char *) nodeset_str = NULL; virDomainNumatuneMemMode mode; size_t i = 0; int ret = -1; @@ -10060,7 +10038,6 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm, ret = 0; cleanup: - VIR_FREE(nodeset_str); virCgroupFree(&cgroup_temp); return ret; @@ -10203,7 +10180,7 @@ qemuDomainGetNumaParameters(virDomainPtr dom, virDomainObjPtr vm = NULL; virDomainNumatuneMemMode tmpmode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; qemuDomainObjPrivatePtr priv; - char *nodeset = NULL; + VIR_AUTOFREE(char *) nodeset = NULL; int ret = -1; virDomainDefPtr def = NULL; bool live = false; @@ -10267,7 +10244,6 @@ qemuDomainGetNumaParameters(virDomainPtr dom, ret = 0; cleanup: - VIR_FREE(nodeset); virDomainObjEndAPI(&vm); return ret; } @@ -11134,7 +11110,7 @@ qemuDomainBlockResize(virDomainPtr dom, virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; int ret = -1; - char *device = NULL; + VIR_AUTOFREE(char *) device = NULL; const char *nodename = NULL; virDomainDiskDefPtr disk = NULL; @@ -11206,7 +11182,6 @@ qemuDomainBlockResize(virDomainPtr dom, qemuDomainObjEndJob(driver, vm); cleanup: - VIR_FREE(device); virDomainObjEndAPI(&vm); return ret; } @@ -11915,7 +11890,7 @@ qemuDomainBlockPeek(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainDiskDefPtr disk = NULL; virDomainObjPtr vm; - char *tmpbuf = NULL; + VIR_AUTOFREE(char *) tmpbuf = NULL; ssize_t nread; int ret = -1; @@ -11970,7 +11945,6 @@ qemuDomainBlockPeek(virDomainPtr dom, if (disk) virStorageFileDeinit(disk->src); virDomainObjEndAPI(&vm); - VIR_FREE(tmpbuf); return ret; } -- 2.21.0

Using VIR_AUTOFREE() in all strings of qemu_driver.c make the code a bit tidier and smaller, sparing VIR_FREE() calls and sometimes a whole 'cleanup' label. This is the last part of this change. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 99 +++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 65 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index f3fccc0843..fd7c8bb1be 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11956,7 +11956,7 @@ qemuDomainMemoryPeek(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - char *tmp = NULL; + VIR_AUTOFREE(char *) tmp = NULL; int fd = -1, ret = -1; qemuDomainObjPrivatePtr priv; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; @@ -12028,7 +12028,6 @@ qemuDomainMemoryPeek(virDomainPtr dom, VIR_FORCE_CLOSE(fd); if (tmp) unlink(tmp); - VIR_FREE(tmp); virDomainObjEndAPI(&vm); return ret; } @@ -12194,7 +12193,7 @@ qemuStorageLimitsRefresh(virQEMUDriverPtr driver, int ret = -1; int fd = -1; struct stat sb; - char *buf = NULL; + VIR_AUTOFREE(char *) buf = NULL; ssize_t len; if ((rc = qemuDomainStorageOpenStat(driver, cfg, vm, src, &fd, &sb, @@ -12230,7 +12229,6 @@ qemuStorageLimitsRefresh(virQEMUDriverPtr driver, ret = 1; cleanup: - VIR_FREE(buf); qemuDomainStorageCloseStat(src, &fd); return ret; } @@ -12451,7 +12449,7 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - char *origname = NULL; + VIR_AUTOFREE(char *) origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12486,7 +12484,6 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn, cleanup: qemuMigrationParamsFree(migParams); - VIR_FREE(origname); virDomainDefFree(def); return ret; } @@ -12508,7 +12505,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - char *origname = NULL; + VIR_AUTOFREE(char *) origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12553,7 +12550,6 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, cleanup: qemuMigrationParamsFree(migParams); - VIR_FREE(origname); virDomainDefFree(def); return ret; } @@ -12754,7 +12750,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - char *origname = NULL; + VIR_AUTOFREE(char *) origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12789,7 +12785,6 @@ qemuDomainMigratePrepare3(virConnectPtr dconn, cleanup: qemuMigrationParamsFree(migParams); - VIR_FREE(origname); virDomainDefFree(def); return ret; } @@ -12815,7 +12810,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, int nbdPort = 0; int nmigrate_disks; const char **migrate_disks = NULL; - char *origname = NULL; + VIR_AUTOFREE(char *) origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12878,7 +12873,6 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, cleanup: qemuMigrationParamsFree(migParams); VIR_FREE(migrate_disks); - VIR_FREE(origname); virDomainDefFree(def); return ret; } @@ -12898,7 +12892,7 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - char *origname = NULL; + VIR_AUTOFREE(char *) origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12927,7 +12921,6 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn, cleanup: qemuMigrationParamsFree(migParams); - VIR_FREE(origname); virDomainDefFree(def); return ret; } @@ -12947,7 +12940,7 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn, virDomainDefPtr def = NULL; const char *dom_xml = NULL; const char *dname = NULL; - char *origname = NULL; + VIR_AUTOFREE(char *) origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12986,7 +12979,6 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn, cleanup: qemuMigrationParamsFree(migParams); - VIR_FREE(origname); virDomainDefFree(def); return ret; } @@ -13308,7 +13300,7 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, unsigned domain = 0, bus = 0, slot = 0, function = 0; int ret = -1; virNodeDeviceDefPtr def = NULL; - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; bool vfio = qemuHostdevHostSupportsPassthroughVFIO(); virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; @@ -13358,7 +13350,6 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, cleanup: virPCIDeviceFree(pci); virNodeDeviceDefFree(def); - VIR_FREE(xml); return ret; } @@ -13376,7 +13367,7 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev) unsigned domain = 0, bus = 0, slot = 0, function = 0; int ret = -1; virNodeDeviceDefPtr def = NULL; - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; xml = virNodeDeviceGetXMLDesc(dev, 0); @@ -13402,7 +13393,6 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev) virPCIDeviceFree(pci); cleanup: virNodeDeviceDefFree(def); - VIR_FREE(xml); return ret; } @@ -13414,7 +13404,7 @@ qemuNodeDeviceReset(virNodeDevicePtr dev) unsigned domain = 0, bus = 0, slot = 0, function = 0; int ret = -1; virNodeDeviceDefPtr def = NULL; - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; xml = virNodeDeviceGetXMLDesc(dev, 0); @@ -13440,7 +13430,6 @@ qemuNodeDeviceReset(virNodeDevicePtr dev) virPCIDeviceFree(pci); cleanup: virNodeDeviceDefFree(def); - VIR_FREE(xml); return ret; } @@ -15277,7 +15266,6 @@ qemuDomainSnapshotDiskPrepareOne(virQEMUDriverPtr driver, qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv = vm->privateData; - char *backingStoreStr; virDomainDiskDefPtr persistdisk; VIR_AUTOUNREF(virStorageSourcePtr) terminator = NULL; bool supportsCreate; @@ -15323,13 +15311,13 @@ qemuDomainSnapshotDiskPrepareOne(virQEMUDriverPtr driver, * block commit still works */ if (reuse) { if (supportsBacking) { + VIR_AUTOFREE(char *) backingStoreStr = NULL; + if (virStorageFileGetBackingStoreStr(dd->src, &backingStoreStr) < 0) return -1; if (backingStoreStr != NULL) { if (virStorageIsRelative(backingStoreStr)) VIR_STEAL_PTR(dd->relPath, backingStoreStr); - else - VIR_FREE(backingStoreStr); } } } else { @@ -15776,7 +15764,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, { virQEMUDriverPtr driver = domain->conn->privateData; virDomainObjPtr vm = NULL; - char *xml = NULL; + VIR_AUTOFREE(char *) xml = NULL; virDomainMomentObjPtr snap = NULL; virDomainSnapshotPtr snapshot = NULL; virDomainMomentObjPtr current = NULL; @@ -16057,7 +16045,6 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, cleanup: virDomainObjEndAPI(&vm); - VIR_FREE(xml); return snapshot; } @@ -17844,7 +17831,7 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom, virDomainDiskDefPtr disk; int ret = -1; virDomainObjPtr vm; - char *device = NULL; + VIR_AUTOFREE(char *) device = NULL; unsigned long long speed = bandwidth; virCheckFlags(VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES, -1); @@ -17889,7 +17876,6 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom, qemuDomainObjEndJob(driver, vm); cleanup: - VIR_FREE(device); virDomainObjEndAPI(&vm); return ret; @@ -18969,7 +18955,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainBlockIoTuneInfo info; - char *drivealias = NULL; + VIR_AUTOFREE(char *) drivealias = NULL; const char *qdevid = NULL; int ret = -1; size_t i; @@ -19296,7 +19282,6 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, cleanup: VIR_FREE(info.group_name); - VIR_FREE(drivealias); virDomainObjEndAPI(&vm); if (eventNparams) virTypedParamsFree(eventParams, eventNparams); @@ -19317,7 +19302,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainBlockIoTuneInfo reply = {0}; - char *drivealias = NULL; + VIR_AUTOFREE(char *) drivealias = NULL; const char *qdevid = NULL; int ret = -1; int maxparams; @@ -19454,7 +19439,6 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, cleanup: VIR_FREE(reply.group_name); - VIR_FREE(drivealias); virDomainObjEndAPI(&vm); return ret; } @@ -21078,12 +21062,10 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk, bool blockdev) { - char *alias = NULL; virStorageSourcePtr n; const char *frontendalias; const char *backendalias; const char *backendstoragealias; - int ret = -1; /* * This helps to keep logs clean from error messages on getting stats @@ -21100,6 +21082,8 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk, } for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) { + VIR_AUTOFREE(char *) alias = NULL; + if (blockdev) { frontendalias = QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName; backendalias = n->nodeformat; @@ -21108,7 +21092,7 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk, /* alias may be NULL if the VM is not running */ if (disk->info.alias && !(alias = qemuDomainStorageAlias(disk->info.alias, n->id))) - goto cleanup; + return -1; qemuDomainGetStatsOneBlockRefreshNamed(n, alias, stats, nodestats); @@ -21118,37 +21102,32 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk, } if (qemuDomainGetStatsBlockExportHeader(disk, n, *recordnr, params) < 0) - goto cleanup; + return -1; /* The following stats make sense only for the frontend device */ if (n == disk->src) { if (qemuDomainGetStatsBlockExportFrontend(frontendalias, stats, *recordnr, params) < 0) - goto cleanup; + return -1; } if (qemuDomainGetStatsOneBlock(driver, cfg, dom, params, backendalias, n, *recordnr, stats) < 0) - goto cleanup; + return -1; if (qemuDomainGetStatsBlockExportBackendStorage(backendstoragealias, stats, *recordnr, params) < 0) - goto cleanup; + return -1; - VIR_FREE(alias); (*recordnr)++; if (!visitBacking) break; } - ret = 0; - - cleanup: - VIR_FREE(alias); - return ret; + return 0; } @@ -21864,12 +21843,12 @@ qemuDomainRenameCallback(virDomainObjPtr vm, virObjectEventPtr event_new = NULL; virObjectEventPtr event_old = NULL; int ret = -1; - char *new_dom_name = NULL; - char *old_dom_name = NULL; - char *new_dom_cfg_file = NULL; - char *old_dom_cfg_file = NULL; - char *new_dom_autostart_link = NULL; - char *old_dom_autostart_link = NULL; + VIR_AUTOFREE(char *) new_dom_name = NULL; + VIR_AUTOFREE(char *) old_dom_name = NULL; + VIR_AUTOFREE(char *) new_dom_cfg_file = NULL; + VIR_AUTOFREE(char *) old_dom_cfg_file = NULL; + VIR_AUTOFREE(char *) new_dom_autostart_link = NULL; + VIR_AUTOFREE(char *) old_dom_autostart_link = NULL; virCheckFlags(0, ret); @@ -21941,12 +21920,6 @@ qemuDomainRenameCallback(virDomainObjPtr vm, ret = 0; cleanup: - VIR_FREE(old_dom_autostart_link); - VIR_FREE(new_dom_autostart_link); - VIR_FREE(old_dom_cfg_file); - VIR_FREE(new_dom_cfg_file); - VIR_FREE(old_dom_name); - VIR_FREE(new_dom_name); virObjectEventStateQueue(driver->domainEventState, event_old); virObjectEventStateQueue(driver->domainEventState, event_new); return ret; @@ -22051,7 +22024,7 @@ qemuDomainGetGuestVcpusParams(virTypedParameterPtr *params, virBitmapPtr vcpus = NULL; virBitmapPtr online = NULL; virBitmapPtr offlinable = NULL; - char *tmp = NULL; + VIR_AUTOFREE(char *) tmp = NULL; size_t i; int ret = -1; @@ -22080,7 +22053,6 @@ qemuDomainGetGuestVcpusParams(virTypedParameterPtr *params, goto cleanup; \ if (virTypedParamsAddString(&par, &npar, &maxpar, #name, tmp) < 0) \ goto cleanup; \ - VIR_FREE(tmp) ADD_BITMAP(vcpus); ADD_BITMAP(online); @@ -22094,7 +22066,6 @@ qemuDomainGetGuestVcpusParams(virTypedParameterPtr *params, ret = 0; cleanup: - VIR_FREE(tmp); virBitmapFree(vcpus); virBitmapFree(online); virBitmapFree(offlinable); @@ -22322,7 +22293,7 @@ qemuDomainSetBlockThreshold(virDomainPtr dom, qemuDomainObjPrivatePtr priv; virDomainObjPtr vm = NULL; virStorageSourcePtr src; - char *nodename = NULL; + VIR_AUTOFREE(char *) nodename = NULL; int rc; int ret = -1; @@ -22376,7 +22347,6 @@ qemuDomainSetBlockThreshold(virDomainPtr dom, qemuDomainObjEndJob(driver, vm); cleanup: - VIR_FREE(nodename); virDomainObjEndAPI(&vm); return ret; } @@ -22550,7 +22520,7 @@ qemuDomainGetSEVMeasurement(virQEMUDriverPtr driver, unsigned int flags) { int ret = -1; - char *tmp = NULL; + VIR_AUTOFREE(char *) tmp = NULL; int maxpar = 0; virCheckFlags(VIR_TYPED_PARAM_STRING_OKAY, -1); @@ -22575,7 +22545,6 @@ qemuDomainGetSEVMeasurement(virQEMUDriverPtr driver, ret = 0; endjob: - VIR_FREE(tmp); qemuDomainObjEndJob(driver, vm); return ret; } -- 2.21.0

This patch uses VIR_AUTOFREE on instances of 'unsigned int *' and 'unsigned long long *' found in qemu_driver.c. Suggested-by: Erik Skultety <eskultet@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fd7c8bb1be..6f283d2de3 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1082,7 +1082,7 @@ qemuStateStop(void) size_t i; int state; virDomainPtr *domains = NULL; - unsigned int *flags = NULL; + VIR_AUTOFREE(unsigned int *) flags = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(qemu_driver); if (!(conn = virConnectOpen(cfg->uri))) @@ -1120,7 +1120,6 @@ qemuStateStop(void) virObjectUnref(domains[i]); VIR_FREE(domains); } - VIR_FREE(flags); return ret; } @@ -20715,7 +20714,7 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr driver, size_t i; int ret = -1; virVcpuInfoPtr cpuinfo = NULL; - unsigned long long *cpuwait = NULL; + VIR_AUTOFREE(unsigned long long *) cpuwait = NULL; if (virTypedParamListAddUInt(params, virDomainDefGetVcpus(dom->def), "vcpu.current") < 0) @@ -20780,7 +20779,6 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr driver, cleanup: VIR_FREE(cpuinfo); - VIR_FREE(cpuwait); return ret; } -- 2.21.0

Previous patches added VIR_AUTO* facilities in qemu_driver.c to cleanup virObjectUnref() and VIR_FREE() calls. This patch now converts those VIR_AUTO* macros to their GLib alternatives, g_autoptr and g_autofree. After this patch, VIR_AUTO* macros are being used only in three functions: - qemuSecurityInit - qemuDomainSaveInternal - qemuDomainSaveImageStartVM The rest of the file was converted to GLib macros. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_driver.c | 366 ++++++++++++++++++++--------------------- 1 file changed, 183 insertions(+), 183 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 6f283d2de3..046f68ad40 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -202,7 +202,7 @@ qemuAutostartDomain(virDomainObjPtr vm, { virQEMUDriverPtr driver = opaque; int flags = 0; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); int ret = -1; if (cfg->autoStartBypassCache) @@ -254,7 +254,7 @@ qemuSecurityChownCallback(const virStorageSource *src, int save_errno = 0; int ret = -1; int rv; - VIR_AUTOUNREF(virStorageSourcePtr) cpy = NULL; + g_autoptr(virStorageSource) cpy = NULL; rv = virStorageFileSupportsSecurityDriver(src); if (rv <= 0) @@ -381,7 +381,7 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - VIR_AUTOFREE(char *) snapDir = NULL; + g_autofree char *snapDir = NULL; DIR *dir = NULL; struct dirent *entry; virDomainSnapshotDefPtr def = NULL; @@ -392,7 +392,7 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, VIR_DOMAIN_SNAPSHOT_PARSE_DISKS | VIR_DOMAIN_SNAPSHOT_PARSE_INTERNAL); int ret = -1; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; int direrr; qemuDomainObjPrivatePtr priv; @@ -418,8 +418,8 @@ qemuDomainSnapshotLoad(virDomainObjPtr vm, goto cleanup; while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { - VIR_AUTOFREE(char *) xmlStr = NULL; - VIR_AUTOFREE(char *) fullpath = NULL; + g_autofree char *xmlStr = NULL; + g_autofree char *fullpath = NULL; /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ @@ -497,7 +497,7 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, void *data) { char *baseDir = (char *)data; - VIR_AUTOFREE(char *) chkDir = NULL; + g_autofree char *chkDir = NULL; DIR *dir = NULL; struct dirent *entry; virDomainCheckpointDefPtr def = NULL; @@ -505,7 +505,7 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, virDomainMomentObjPtr current = NULL; unsigned int flags = VIR_DOMAIN_CHECKPOINT_PARSE_REDEFINE; int ret = -1; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; int direrr; qemuDomainObjPrivatePtr priv; @@ -530,8 +530,8 @@ qemuDomainCheckpointLoad(virDomainObjPtr vm, goto cleanup; while ((direrr = virDirRead(dir, &entry, NULL)) > 0) { - VIR_AUTOFREE(char *) xmlStr = NULL; - VIR_AUTOFREE(char *) fullpath = NULL; + g_autofree char *xmlStr = NULL; + g_autofree char *fullpath = NULL; /* NB: ignoring errors, so one malformed config doesn't kill the whole process */ @@ -648,11 +648,11 @@ qemuStateInitialize(bool privileged, virStateInhibitCallback callback, void *opaque) { - VIR_AUTOFREE(char *) driverConf = NULL; + g_autofree char *driverConf = NULL; virQEMUDriverConfigPtr cfg; uid_t run_uid = -1; gid_t run_gid = -1; - VIR_AUTOFREE(char *) memoryBackingPath = NULL; + g_autofree char *memoryBackingPath = NULL; bool autostart = true; size_t i; @@ -816,7 +816,7 @@ qemuStateInitialize(bool privileged, goto error; if (privileged) { - VIR_AUTOFREE(char *) channeldir = NULL; + g_autofree char *channeldir = NULL; if (chown(cfg->libDir, cfg->user, cfg->group) < 0) { virReportSystemError(errno, @@ -921,7 +921,7 @@ qemuStateInitialize(bool privileged, * it, since we can't assume the root mount point has permissions that * will let our spawned QEMU instances use it. */ for (i = 0; i < cfg->nhugetlbfs; i++) { - VIR_AUTOFREE(char *) hugepagePath = NULL; + g_autofree char *hugepagePath = NULL; hugepagePath = qemuGetBaseHugepagePath(&cfg->hugetlbfs[i]); @@ -1048,8 +1048,8 @@ static void qemuNotifyLoadDomain(virDomainObjPtr vm, int newVM, void *opaque) static int qemuStateReload(void) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; + g_autoptr(virCaps) caps = NULL; if (!qemu_driver) return 0; @@ -1077,13 +1077,13 @@ static int qemuStateStop(void) { int ret = -1; - VIR_AUTOUNREF(virConnectPtr) conn = NULL; + g_autoptr(virConnect) conn = NULL; int numDomains = 0; size_t i; int state; virDomainPtr *domains = NULL; - VIR_AUTOFREE(unsigned int *) flags = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(qemu_driver); + g_autofree unsigned int *flags = NULL; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(qemu_driver); if (!(conn = virConnectOpen(cfg->uri))) goto cleanup; @@ -1177,7 +1177,7 @@ qemuStateCleanup(void) static int qemuConnectURIProbe(char **uri) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; if (qemu_driver == NULL) return 0; @@ -1329,7 +1329,7 @@ qemuConnectGetMaxVcpus(virConnectPtr conn G_GNUC_UNUSED, const char *type) static char *qemuConnectGetCapabilities(virConnectPtr conn) { virQEMUDriverPtr driver = conn->privateData; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; if (virConnectGetCapabilitiesEnsureACL(conn) < 0) return NULL; @@ -1345,8 +1345,8 @@ static int qemuGetSchedInfo(unsigned long long *cpuWait, pid_t pid, pid_t tid) { - VIR_AUTOFREE(char *) proc = NULL; - VIR_AUTOFREE(char *) data = NULL; + g_autofree char *proc = NULL; + g_autofree char *data = NULL; char **lines = NULL; size_t i; int ret = -1; @@ -1419,7 +1419,7 @@ static int qemuGetProcessInfo(unsigned long long *cpuTime, int *lastCpu, long *vm_rss, pid_t pid, int tid) { - VIR_AUTOFREE(char *) proc = NULL; + g_autofree char *proc = NULL; FILE *pidinfo; unsigned long long usertime = 0, systime = 0; long rss = 0; @@ -1681,7 +1681,7 @@ static int qemuConnectGetVersion(virConnectPtr conn, unsigned long *version) { virQEMUDriverPtr driver = conn->privateData; unsigned int qemuVersion = 0; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; if (virConnectGetVersionEnsureACL(conn) < 0) return -1; @@ -1748,7 +1748,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, virObjectEventPtr event = NULL; virObjectEventPtr event2 = NULL; unsigned int start_flags = VIR_QEMU_PROCESS_START_COLD; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -1836,7 +1836,7 @@ static int qemuDomainSuspend(virDomainPtr dom) qemuDomainObjPrivatePtr priv; virDomainPausedReason reason; int state; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; if (!(vm = qemuDomainObjFromDomain(dom))) return -1; @@ -1890,7 +1890,7 @@ static int qemuDomainResume(virDomainPtr dom) int ret = -1; int state; int reason; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; if (!(vm = qemuDomainObjFromDomain(dom))) return -1; @@ -2316,7 +2316,7 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned long newmem, virDomainDefPtr def; virDomainDefPtr persistentDef; int ret = -1, r; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG | @@ -2443,7 +2443,7 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPtr dom, int period, virDomainDefPtr def; virDomainDefPtr persistentDef; int ret = -1, r; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -2888,7 +2888,7 @@ virQEMUSaveDataWrite(virQEMUSaveDataPtr data, size_t xml_len; size_t cookie_len = 0; size_t zerosLen = 0; - VIR_AUTOFREE(char *) zeros = NULL; + g_autofree char *zeros = NULL; xml_len = strlen(data->xml) + 1; if (data->cookie) @@ -3012,7 +3012,7 @@ qemuOpenFile(virQEMUDriverPtr driver, int oflags, bool *needUnlink) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); uid_t user = cfg->user; gid_t group = cfg->group; bool dynamicOwnership = cfg->dynamicOwnership; @@ -3191,7 +3191,7 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver, unsigned int flags, qemuDomainAsyncJob asyncJob) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); bool needUnlink = false; int ret = -1; int fd = -1; @@ -3272,7 +3272,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, int compressed, const char *compressedpath, const char *xmlin, unsigned int flags) { - VIR_AUTOFREE(char *) xml = NULL; + g_autofree char *xml = NULL; bool was_running = false; int ret = -1; virObjectEventPtr event = NULL; @@ -3474,10 +3474,10 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *path, const char *dxml, { virQEMUDriverPtr driver = dom->conn->privateData; int compressed; - VIR_AUTOFREE(char *) compressedpath = NULL; + g_autofree char *compressedpath = NULL; int ret = -1; virDomainObjPtr vm = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | VIR_DOMAIN_SAVE_RUNNING | @@ -3516,7 +3516,7 @@ static char * qemuDomainManagedSavePath(virQEMUDriverPtr driver, virDomainObjPtr vm) { char *ret; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); if (virAsprintf(&ret, "%s/%s.save", cfg->saveDir, vm->def->name) < 0) return NULL; @@ -3528,11 +3528,11 @@ static int qemuDomainManagedSave(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; int compressed; - VIR_AUTOFREE(char *) compressedpath = NULL; + g_autofree char *compressedpath = NULL; virDomainObjPtr vm; - VIR_AUTOFREE(char *) name = NULL; + g_autofree char *name = NULL; int ret = -1; virCheckFlags(VIR_DOMAIN_SAVE_BYPASS_CACHE | @@ -3581,7 +3581,7 @@ qemuDomainManagedSaveLoad(virDomainObjPtr vm, void *opaque) { virQEMUDriverPtr driver = opaque; - VIR_AUTOFREE(char *) name = NULL; + g_autofree char *name = NULL; int ret = -1; virObjectLock(vm); @@ -3625,7 +3625,7 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigned int flags) virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; int ret = -1; - VIR_AUTOFREE(char *) name = NULL; + g_autofree char *name = NULL; virCheckFlags(0, -1); @@ -3767,8 +3767,8 @@ doCoreDump(virQEMUDriverPtr driver, int directFlag = 0; unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING; const char *memory_dump_format = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - VIR_AUTOFREE(char *) compressedpath = NULL; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_autofree char *compressedpath = NULL; /* We reuse "save" flag for "dump" here. Then, we can support the same * format in "save" and "dump". This path doesn't need the compression @@ -3973,13 +3973,13 @@ qemuDomainScreenshot(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; - VIR_AUTOFREE(char *) tmp = NULL; + g_autofree char *tmp = NULL; int tmp_fd = -1; size_t i; const char *videoAlias = NULL; char *ret = NULL; bool unlink_tmp = false; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(0, NULL); @@ -4078,11 +4078,11 @@ getAutoDumpPath(virQEMUDriverPtr driver, virDomainObjPtr vm) { char *dumpfile = NULL; - VIR_AUTOFREE(char *domname) = virDomainDefGetShortName(vm->def); + g_autofree char *domname = virDomainDefGetShortName(vm->def); char timestr[100]; struct tm time_info; time_t curtime = time(NULL); - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; if (!domname) return NULL; @@ -4106,8 +4106,8 @@ processWatchdogEvent(virQEMUDriverPtr driver, int action) { int ret; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - VIR_AUTOFREE(char *) dumpfile = getAutoDumpPath(driver, vm); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_autofree char *dumpfile = getAutoDumpPath(driver, vm); unsigned int flags = VIR_DUMP_MEMORY_ONLY; if (!dumpfile) @@ -4153,8 +4153,8 @@ doCoreDumpToAutoDumpPath(virQEMUDriverPtr driver, unsigned int flags) { int ret = -1; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - VIR_AUTOFREE(char *) dumpfile = getAutoDumpPath(driver, vm); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_autofree char *dumpfile = getAutoDumpPath(driver, vm); if (!dumpfile) return -1; @@ -4173,8 +4173,8 @@ qemuProcessGuestPanicEventInfo(virQEMUDriverPtr driver, virDomainObjPtr vm, qemuMonitorEventPanicInfoPtr info) { - VIR_AUTOFREE(char *) msg = qemuMonitorGuestPanicEventInfoFormatMsg(info); - VIR_AUTOFREE(char *) timestamp = virTimeStringNow(); + g_autofree char *msg = qemuMonitorGuestPanicEventInfoFormatMsg(info); + g_autofree char *timestamp = virTimeStringNow(); if (msg && timestamp) qemuDomainLogAppendMessage(driver, vm, "%s: panic %s\n", timestamp, msg); @@ -4189,7 +4189,7 @@ processGuestPanicEvent(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virObjectEventPtr event = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); bool removeInactive = false; unsigned long flags = VIR_DUMP_MEMORY_ONLY; @@ -4270,7 +4270,7 @@ processDeviceDeletedEvent(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *devAlias) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); virDomainDeviceDef dev; VIR_DEBUG("Removing device %s from domain %p %s", @@ -4504,7 +4504,7 @@ processNicRxFilterChangedEvent(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *devAlias) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDeviceDef dev; virDomainNetDefPtr def; @@ -4612,7 +4612,7 @@ processSerialChangedEvent(virQEMUDriverPtr driver, const char *devAlias, bool connected) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); virDomainChrDeviceState newstate; virObjectEventPtr event = NULL; virDomainDeviceDef dev; @@ -4697,7 +4697,7 @@ processBlockJobEvent(virQEMUDriverPtr driver, int status) { virDomainDiskDefPtr disk; - VIR_AUTOUNREF(qemuBlockJobDataPtr) job = NULL; + g_autoptr(qemuBlockJobData) job = NULL; if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) return; @@ -4814,7 +4814,7 @@ processRdmaGidStatusChangedEvent(virDomainObjPtr vm, { unsigned int prefix_len; virSocketAddr addr; - VIR_AUTOFREE(char *) addrStr = NULL; + g_autofree char *addrStr = NULL; int rc; if (!virDomainObjIsActive(vm)) @@ -4958,7 +4958,7 @@ qemuDomainSetVcpusMax(virQEMUDriverPtr driver, virDomainDefPtr persistentDef, unsigned int nvcpus) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); unsigned int topologycpus; if (def) { @@ -5073,7 +5073,7 @@ qemuDomainPinVcpuLive(virDomainObjPtr vm, virDomainVcpuDefPtr vcpuinfo; qemuDomainObjPrivatePtr priv = vm->privateData; virCgroupPtr cgroup_vcpu = NULL; - VIR_AUTOFREE(char *) str = NULL; + g_autofree char *str = NULL; virObjectEventPtr event = NULL; char paramField[VIR_TYPED_PARAM_FIELD_LENGTH] = ""; virTypedParameterPtr eventParams = NULL; @@ -5156,7 +5156,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, int ret = -1; virBitmapPtr pcpumap = NULL; virDomainVcpuDefPtr vcpuinfo = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); @@ -5275,9 +5275,9 @@ qemuDomainPinEmulator(virDomainPtr dom, int ret = -1; qemuDomainObjPrivatePtr priv; virBitmapPtr pcpumap = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virObjectEventPtr event = NULL; - VIR_AUTOFREE(char *) str = NULL; + g_autofree char *str = NULL; virTypedParameterPtr eventParams = NULL; int eventNparams = 0; int eventMaxparams = 0; @@ -5738,7 +5738,7 @@ qemuDomainPinIOThread(virDomainPtr dom, { int ret = -1; virQEMUDriverPtr driver = dom->conn->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virDomainObjPtr vm; virDomainDefPtr def; virDomainDefPtr persistentDef; @@ -5747,7 +5747,7 @@ qemuDomainPinIOThread(virDomainPtr dom, virCgroupPtr cgroup_iothread = NULL; virObjectEventPtr event = NULL; char paramField[VIR_TYPED_PARAM_FIELD_LENGTH] = ""; - VIR_AUTOFREE(char *) str = NULL; + g_autofree char *str = NULL; virTypedParameterPtr eventParams = NULL; int eventNparams = 0; int eventMaxparams = 0; @@ -5870,7 +5870,7 @@ qemuDomainHotplugAddIOThread(virQEMUDriverPtr driver, unsigned int iothread_id) { qemuDomainObjPrivatePtr priv = vm->privateData; - VIR_AUTOFREE(char *) alias = NULL; + g_autofree char *alias = NULL; size_t idx; int ret = -1; unsigned int orig_niothreads = vm->def->niothreadids; @@ -5990,7 +5990,7 @@ qemuDomainHotplugDelIOThread(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; size_t idx; - VIR_AUTOFREE(char *) alias = NULL; + g_autofree char *alias = NULL; int rc = -1; int ret = -1; unsigned int orig_niothreads = vm->def->niothreadids; @@ -6207,7 +6207,7 @@ qemuDomainChgIOThread(virQEMUDriverPtr driver, virDomainIOThreadAction action, unsigned int flags) { - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; qemuDomainObjPrivatePtr priv; virDomainDefPtr def; virDomainDefPtr persistentDef; @@ -6532,7 +6532,7 @@ static int qemuNodeGetSecurityModel(virConnectPtr conn, { virQEMUDriverPtr driver = conn->privateData; char *p; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; memset(secmodel, 0, sizeof(*secmodel)); @@ -6586,7 +6586,7 @@ qemuDomainSaveImageUpdateDef(virQEMUDriverPtr driver, virDomainDefPtr ret = NULL; virDomainDefPtr newdef_migr = NULL; virDomainDefPtr newdef = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; if (!(caps = virQEMUDriverGetCapabilities(driver, false))) goto cleanup; @@ -6663,7 +6663,7 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver, virQEMUSaveHeaderPtr header; virDomainDefPtr def = NULL; int oflags = open_write ? O_RDWR : O_RDONLY; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; size_t xml_len; size_t cookie_len; @@ -6808,7 +6808,7 @@ qemuDomainSaveImageStartVM(virConnectPtr conn, virObjectEventPtr event; int intermediatefd = -1; virCommandPtr cmd = NULL; - VIR_AUTOFREE(char *) errbuf = NULL; + g_autofree char *errbuf = NULL; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virQEMUSaveHeaderPtr header = &data->header; VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; @@ -6942,7 +6942,7 @@ qemuDomainRestoreFlags(virConnectPtr conn, qemuDomainObjPrivatePtr priv = NULL; virDomainDefPtr def = NULL; virDomainObjPtr vm = NULL; - VIR_AUTOFREE(char *) xmlout = NULL; + g_autofree char *xmlout = NULL; const char *newxml = dxml; int fd = -1; int ret = -1; @@ -7149,7 +7149,7 @@ qemuDomainManagedSaveGetXMLDesc(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - VIR_AUTOFREE(char *) path = NULL; + g_autofree char *path = NULL; char *ret = NULL; virDomainDefPtr def = NULL; int fd = -1; @@ -7196,7 +7196,7 @@ qemuDomainManagedSaveDefineXML(virDomainPtr dom, const char *dxml, virQEMUDriverPtr driver = dom->conn->privateData; virConnectPtr conn = dom->conn; virDomainObjPtr vm; - VIR_AUTOFREE(char *) path = NULL; + g_autofree char *path = NULL; int ret = -1; if (!(vm = qemuDomainObjFromDomain(dom))) @@ -7236,7 +7236,7 @@ qemuDomainObjRestore(virConnectPtr conn, qemuDomainObjPrivatePtr priv = vm->privateData; int fd = -1; int ret = -1; - VIR_AUTOFREE(char *) xmlout = NULL; + g_autofree char *xmlout = NULL; virQEMUSaveDataPtr data = NULL; virFileWrapperFdPtr wrapperFd = NULL; @@ -7349,8 +7349,8 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn, virCommandPtr cmd = NULL; char *ret = NULL; size_t i; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virCaps) caps = NULL; virCheckFlags(0, NULL); @@ -7382,7 +7382,7 @@ static char *qemuConnectDomainXMLToNative(virConnectPtr conn, for (i = 0; i < vm->def->nnets; i++) { virDomainNetDefPtr net = vm->def->nets[i]; unsigned int bootIndex = net->info.bootIndex; - VIR_AUTOFREE(char *) model = NULL; + g_autofree char *model = NULL; virMacAddr mac = net->mac; char *script = net->script; @@ -7457,7 +7457,7 @@ qemuDomainObjStart(virConnectPtr conn, qemuDomainAsyncJob asyncJob) { int ret = -1; - VIR_AUTOFREE(char *) managed_save = NULL; + g_autofree char *managed_save = NULL; bool start_paused = (flags & VIR_DOMAIN_START_PAUSED) != 0; bool autodestroy = (flags & VIR_DOMAIN_START_AUTODESTROY) != 0; bool bypass_cache = (flags & VIR_DOMAIN_START_BYPASS_CACHE) != 0; @@ -7596,8 +7596,8 @@ qemuDomainDefineXMLFlags(virConnectPtr conn, virDomainObjPtr vm = NULL; virDomainPtr dom = NULL; virObjectEventPtr event = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virCaps) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -7677,7 +7677,7 @@ qemuDomainUndefineFlags(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; virObjectEventPtr event = NULL; - VIR_AUTOFREE(char *) name = NULL; + g_autofree char *name = NULL; int ret = -1; int nsnapshots; int ncheckpoints; @@ -8627,11 +8627,11 @@ qemuDomainAttachDeviceLiveAndConfig(virDomainObjPtr vm, { qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr vmdef = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virDomainDeviceDefPtr devConf = NULL; virDomainDeviceDefPtr devLive = NULL; int ret = -1; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_INACTIVE | VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; @@ -8771,8 +8771,8 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr dom, virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; bool force = (flags & VIR_DOMAIN_DEVICE_MODIFY_FORCE) != 0; int ret = -1; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; + g_autoptr(virCaps) caps = NULL; unsigned int parse_flags = 0; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -8882,8 +8882,8 @@ qemuDomainDetachDeviceLiveAndConfig(virQEMUDriverPtr driver, unsigned int flags) { qemuDomainObjPrivatePtr priv = vm->privateData; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virCaps) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virDomainDeviceDefPtr dev = NULL, dev_copy = NULL; unsigned int parse_flags = VIR_DOMAIN_DEF_PARSE_SKIP_VALIDATE; virDomainDefPtr vmdef = NULL; @@ -8976,8 +8976,8 @@ qemuDomainDetachDeviceAliasLiveAndConfig(virQEMUDriverPtr driver, unsigned int flags) { qemuDomainObjPrivatePtr priv = vm->privateData; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virCaps) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainDefPtr vmdef = NULL; @@ -9143,10 +9143,10 @@ static int qemuDomainSetAutostart(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - VIR_AUTOFREE(char *) configFile = NULL; - VIR_AUTOFREE(char *) autostartLink = NULL; + g_autofree char *configFile = NULL; + g_autofree char *autostartLink = NULL; int ret = -1; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; if (!(vm = qemuDomainObjFromDomain(dom))) return -1; @@ -9455,7 +9455,7 @@ qemuDomainSetBlkioParameters(virDomainPtr dom, virDomainDefPtr def; virDomainDefPtr persistentDef; int ret = -1; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; qemuDomainObjPrivatePtr priv; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -9766,7 +9766,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, bool set_swap_hard_limit = false; bool set_hard_limit = false; bool set_soft_limit = false; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; int rc; int ret = -1; qemuDomainObjPrivatePtr priv; @@ -9987,7 +9987,7 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm, { virCgroupPtr cgroup_temp = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; - VIR_AUTOFREE(char *) nodeset_str = NULL; + g_autofree char *nodeset_str = NULL; virDomainNumatuneMemMode mode; size_t i = 0; int ret = -1; @@ -10054,7 +10054,7 @@ qemuDomainSetNumaParameters(virDomainPtr dom, virDomainDefPtr persistentDef; virDomainObjPtr vm = NULL; int ret = -1; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; qemuDomainObjPrivatePtr priv; virBitmapPtr nodeset = NULL; virDomainNumatuneMemMode config_mode; @@ -10179,7 +10179,7 @@ qemuDomainGetNumaParameters(virDomainPtr dom, virDomainObjPtr vm = NULL; virDomainNumatuneMemMode tmpmode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; qemuDomainObjPrivatePtr priv; - VIR_AUTOFREE(char *) nodeset = NULL; + g_autofree char *nodeset = NULL; int ret = -1; virDomainDefPtr def = NULL; bool live = false; @@ -10269,7 +10269,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; size_t i; virDomainObjPtr vm = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; qemuDomainObjPrivatePtr priv; virDomainDefPtr def; virDomainDefPtr persistentDef; @@ -10547,8 +10547,8 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom, long long value_l; int ret = -1; int rc; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; + g_autoptr(virCaps) caps = NULL; qemuDomainObjPrivatePtr priv; virObjectEventPtr event = NULL; virTypedParameterPtr eventParams = NULL; @@ -11109,7 +11109,7 @@ qemuDomainBlockResize(virDomainPtr dom, virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; int ret = -1; - VIR_AUTOFREE(char *) device = NULL; + g_autofree char *device = NULL; const char *nodename = NULL; virDomainDiskDefPtr disk = NULL; @@ -11503,7 +11503,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, int ret = -1; virDomainNetDefPtr net = NULL, persistentNet = NULL; virNetDevBandwidthPtr bandwidth = NULL, newBandwidth = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; bool inboundSpecified = false, outboundSpecified = false; int actualType; bool qosSupported = true; @@ -11889,7 +11889,7 @@ qemuDomainBlockPeek(virDomainPtr dom, virQEMUDriverPtr driver = dom->conn->privateData; virDomainDiskDefPtr disk = NULL; virDomainObjPtr vm; - VIR_AUTOFREE(char *) tmpbuf = NULL; + g_autofree char *tmpbuf = NULL; ssize_t nread; int ret = -1; @@ -11955,10 +11955,10 @@ qemuDomainMemoryPeek(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - VIR_AUTOFREE(char *) tmp = NULL; + g_autofree char *tmp = NULL; int fd = -1, ret = -1; qemuDomainObjPrivatePtr priv; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(VIR_MEMORY_VIRTUAL | VIR_MEMORY_PHYSICAL, -1); @@ -12192,7 +12192,7 @@ qemuStorageLimitsRefresh(virQEMUDriverPtr driver, int ret = -1; int fd = -1; struct stat sb; - VIR_AUTOFREE(char *) buf = NULL; + g_autofree char *buf = NULL; ssize_t len; if ((rc = qemuDomainStorageOpenStat(driver, cfg, vm, src, &fd, &sb, @@ -12243,7 +12243,7 @@ qemuDomainGetBlockInfo(virDomainPtr dom, virDomainObjPtr vm; int ret = -1; virDomainDiskDefPtr disk; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; qemuBlockStatsPtr entry = NULL; virCheckFlags(0, -1); @@ -12448,7 +12448,7 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - VIR_AUTOFREE(char *) origname = NULL; + g_autofree char *origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12504,7 +12504,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - VIR_AUTOFREE(char *) origname = NULL; + g_autofree char *origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12749,7 +12749,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - VIR_AUTOFREE(char *) origname = NULL; + g_autofree char *origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12800,7 +12800,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, unsigned int flags) { virQEMUDriverPtr driver = dconn->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); virDomainDefPtr def = NULL; const char *dom_xml = NULL; const char *dname = NULL; @@ -12809,7 +12809,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn, int nbdPort = 0; int nmigrate_disks; const char **migrate_disks = NULL; - VIR_AUTOFREE(char *) origname = NULL; + g_autofree char *origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12891,7 +12891,7 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn, { virQEMUDriverPtr driver = dconn->privateData; virDomainDefPtr def = NULL; - VIR_AUTOFREE(char *) origname = NULL; + g_autofree char *origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -12939,7 +12939,7 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn, virDomainDefPtr def = NULL; const char *dom_xml = NULL; const char *dname = NULL; - VIR_AUTOFREE(char *) origname = NULL; + g_autofree char *origname = NULL; qemuMigrationParamsPtr migParams = NULL; int ret = -1; @@ -13299,7 +13299,7 @@ qemuNodeDeviceDetachFlags(virNodeDevicePtr dev, unsigned domain = 0, bus = 0, slot = 0, function = 0; int ret = -1; virNodeDeviceDefPtr def = NULL; - VIR_AUTOFREE(char *) xml = NULL; + g_autofree char *xml = NULL; bool vfio = qemuHostdevHostSupportsPassthroughVFIO(); virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; @@ -13366,7 +13366,7 @@ qemuNodeDeviceReAttach(virNodeDevicePtr dev) unsigned domain = 0, bus = 0, slot = 0, function = 0; int ret = -1; virNodeDeviceDefPtr def = NULL; - VIR_AUTOFREE(char *) xml = NULL; + g_autofree char *xml = NULL; virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; xml = virNodeDeviceGetXMLDesc(dev, 0); @@ -13403,7 +13403,7 @@ qemuNodeDeviceReset(virNodeDevicePtr dev) unsigned domain = 0, bus = 0, slot = 0, function = 0; int ret = -1; virNodeDeviceDefPtr def = NULL; - VIR_AUTOFREE(char *) xml = NULL; + g_autofree char *xml = NULL; virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr; xml = virNodeDeviceGetXMLDesc(dev, 0); @@ -13438,7 +13438,7 @@ qemuConnectCompareCPU(virConnectPtr conn, unsigned int flags) { virQEMUDriverPtr driver = conn->privateData; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; bool failIncompatible; virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE, @@ -13507,8 +13507,8 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn, { int ret = VIR_CPU_COMPARE_ERROR; virQEMUDriverPtr driver = conn->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); - VIR_AUTOUNREF(virQEMUCapsPtr) qemuCaps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUCaps) qemuCaps = NULL; bool failIncompatible; virCPUDefPtr hvCPU; virCPUDefPtr cpu = NULL; @@ -13719,9 +13719,9 @@ qemuConnectBaselineHypervisorCPU(virConnectPtr conn, unsigned int flags) { virQEMUDriverPtr driver = conn->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); virCPUDefPtr *cpus = NULL; - VIR_AUTOUNREF(virQEMUCapsPtr) qemuCaps = NULL; + g_autoptr(virQEMUCaps) qemuCaps = NULL; virArch arch; virDomainVirtType virttype; virDomainCapsCPUModelsPtr cpuModels; @@ -14297,7 +14297,7 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, virDomainObjPtr vm; qemuDomainObjPrivatePtr priv; bool postcopy = !!(flags & VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY); - VIR_AUTOPTR(qemuMigrationParams) migParams = NULL; + g_autoptr(qemuMigrationParams) migParams = NULL; unsigned long long max; int ret = -1; @@ -14375,7 +14375,7 @@ qemuDomainMigrationGetPostcopyBandwidth(virQEMUDriverPtr driver, virDomainObjPtr vm, unsigned long *bandwidth) { - VIR_AUTOPTR(qemuMigrationParams) migParams = NULL; + g_autoptr(qemuMigrationParams) migParams = NULL; unsigned long long bw; int rc; int ret = -1; @@ -14584,7 +14584,7 @@ qemuDomainSnapshotCreateInactiveExternal(virQEMUDriverPtr driver, virCommandPtr cmd = NULL; const char *qemuImgPath; virBitmapPtr created = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); int ret = -1; virBuffer buf = VIR_BUFFER_INITIALIZER; virDomainSnapshotDefPtr snapdef = virDomainSnapshotObjGetDef(snap); @@ -15266,7 +15266,7 @@ qemuDomainSnapshotDiskPrepareOne(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDiskDefPtr persistdisk; - VIR_AUTOUNREF(virStorageSourcePtr) terminator = NULL; + g_autoptr(virStorageSource) terminator = NULL; bool supportsCreate; bool supportsBacking; int rc; @@ -15310,7 +15310,7 @@ qemuDomainSnapshotDiskPrepareOne(virQEMUDriverPtr driver, * block commit still works */ if (reuse) { if (supportsBacking) { - VIR_AUTOFREE(char *) backingStoreStr = NULL; + g_autofree char *backingStoreStr = NULL; if (virStorageFileGetBackingStoreStr(dd->src, &backingStoreStr) < 0) return -1; @@ -15495,7 +15495,7 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver, qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv = vm->privateData; - VIR_AUTOPTR(virJSONValue) actions = NULL; + g_autoptr(virJSONValue) actions = NULL; int rc; int ret = -1; size_t i; @@ -15585,14 +15585,14 @@ qemuDomainSnapshotCreateActiveExternal(virQEMUDriverPtr driver, bool resume = false; int ret = -1; qemuDomainObjPrivatePtr priv = vm->privateData; - VIR_AUTOFREE(char *) xml = NULL; + g_autofree char *xml = NULL; virDomainSnapshotDefPtr snapdef = virDomainSnapshotObjGetDef(snap); bool memory = snapdef->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL; bool memory_unlink = false; int thaw = 0; /* 1 if freeze succeeded, -1 if freeze failed */ bool pmsuspended = false; int compressed; - VIR_AUTOFREE(char *) compressedpath = NULL; + g_autofree char *compressedpath = NULL; virQEMUSaveDataPtr data = NULL; /* If quiesce was requested, then issue a freeze command, and a @@ -15763,7 +15763,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, { virQEMUDriverPtr driver = domain->conn->privateData; virDomainObjPtr vm = NULL; - VIR_AUTOFREE(char *) xml = NULL; + g_autofree char *xml = NULL; virDomainMomentObjPtr snap = NULL; virDomainSnapshotPtr snapshot = NULL; virDomainMomentObjPtr current = NULL; @@ -15772,11 +15772,11 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, unsigned int parse_flags = VIR_DOMAIN_SNAPSHOT_PARSE_DISKS; int align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL; bool align_match = true; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; + g_autoptr(virCaps) caps = NULL; qemuDomainObjPrivatePtr priv; virDomainSnapshotState state; - VIR_AUTOUNREF(virDomainSnapshotDefPtr) def = NULL; + g_autoptr(virDomainSnapshotDef) def = NULL; virCheckFlags(VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE | VIR_DOMAIN_SNAPSHOT_CREATE_CURRENT | @@ -16453,8 +16453,8 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, int rc; virDomainDefPtr config = NULL; virDomainDefPtr inactiveConfig = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; + g_autoptr(virCaps) caps = NULL; bool was_stopped = false; qemuDomainSaveCookiePtr cookie; virCPUDefPtr origCPU = NULL; @@ -16931,7 +16931,7 @@ qemuDomainSnapshotDelete(virDomainSnapshotPtr snapshot, virQEMUMomentReparent rep; bool metadata_only = !!(flags & VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY); int external = 0; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virCheckFlags(VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN | VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY | @@ -17484,8 +17484,8 @@ qemuDomainBlockPullCommon(virDomainObjPtr vm, virDomainDiskDefPtr disk; virStorageSourcePtr baseSource = NULL; unsigned int baseIndex = 0; - VIR_AUTOFREE(char *) basePath = NULL; - VIR_AUTOFREE(char *) backingPath = NULL; + g_autofree char *basePath = NULL; + g_autofree char *backingPath = NULL; unsigned long long speed = bandwidth; qemuBlockJobDataPtr job = NULL; bool persistjob = false; @@ -17602,10 +17602,10 @@ qemuDomainBlockJobAbort(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainDiskDefPtr disk = NULL; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); bool pivot = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT); bool async = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC); - VIR_AUTOUNREF(qemuBlockJobDataPtr) job = NULL; + g_autoptr(qemuBlockJobData) job = NULL; virDomainObjPtr vm; qemuDomainObjPrivatePtr priv = NULL; bool blockdev = false; @@ -17770,7 +17770,7 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, virDomainDiskDefPtr disk; int ret = -1; qemuMonitorBlockJobInfo rawInfo; - VIR_AUTOUNREF(qemuBlockJobDataPtr) job = NULL; + g_autoptr(qemuBlockJobData) job = NULL; virCheckFlags(VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES, -1); @@ -17830,7 +17830,7 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom, virDomainDiskDefPtr disk; int ret = -1; virDomainObjPtr vm; - VIR_AUTOFREE(char *) device = NULL; + g_autofree char *device = NULL; unsigned long long speed = bandwidth; virCheckFlags(VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES, -1); @@ -18013,17 +18013,17 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm, virDomainDiskDefPtr disk = NULL; int ret = -1; bool need_unlink = false; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); const char *format = NULL; bool mirror_reuse = !!(flags & VIR_DOMAIN_BLOCK_COPY_REUSE_EXT); bool mirror_shallow = !!(flags & VIR_DOMAIN_BLOCK_COPY_SHALLOW); bool existing = mirror_reuse; qemuBlockJobDataPtr job = NULL; - VIR_AUTOUNREF(virStorageSourcePtr) mirror = mirrorsrc; + g_autoptr(virStorageSource) mirror = mirrorsrc; bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV); bool mirror_initialized = false; - VIR_AUTOPTR(qemuBlockStorageSourceChainData) data = NULL; - VIR_AUTOPTR(qemuBlockStorageSourceChainData) crdata = NULL; + g_autoptr(qemuBlockStorageSourceChainData) data = NULL; + g_autoptr(qemuBlockStorageSourceChainData) crdata = NULL; virStorageSourcePtr n; virStorageSourcePtr mirrorBacking = NULL; int rc = 0; @@ -18292,7 +18292,7 @@ qemuDomainBlockRebase(virDomainPtr dom, const char *path, const char *base, virDomainObjPtr vm; int ret = -1; unsigned long long speed = bandwidth; - VIR_AUTOUNREF(virStorageSourcePtr) dest = NULL; + g_autoptr(virStorageSource) dest = NULL; virCheckFlags(VIR_DOMAIN_BLOCK_REBASE_SHALLOW | VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT | @@ -18492,12 +18492,12 @@ qemuDomainBlockCommit(virDomainPtr dom, unsigned int baseIndex = 0; virStorageSourcePtr top_parent = NULL; bool clean_access = false; - VIR_AUTOFREE(char *) topPath = NULL; - VIR_AUTOFREE(char *) basePath = NULL; - VIR_AUTOFREE(char *) backingPath = NULL; + g_autofree char *topPath = NULL; + g_autofree char *basePath = NULL; + g_autofree char *backingPath = NULL; unsigned long long speed = bandwidth; qemuBlockJobDataPtr job = NULL; - VIR_AUTOUNREF(virStorageSourcePtr) mirror = NULL; + g_autoptr(virStorageSource) mirror = NULL; const char *nodetop = NULL; const char *nodebase = NULL; bool persistjob = false; @@ -18954,7 +18954,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainBlockIoTuneInfo info; - VIR_AUTOFREE(char *) drivealias = NULL; + g_autofree char *drivealias = NULL; const char *qdevid = NULL; int ret = -1; size_t i; @@ -18964,7 +18964,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, bool supportMaxOptions = true; bool supportGroupNameOption = true; bool supportMaxLengthOptions = true; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virObjectEventPtr event = NULL; virTypedParameterPtr eventParams = NULL; int eventNparams = 0; @@ -19301,7 +19301,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, virDomainDefPtr def = NULL; virDomainDefPtr persistentDef = NULL; virDomainBlockIoTuneInfo reply = {0}; - VIR_AUTOFREE(char *) drivealias = NULL; + g_autofree char *drivealias = NULL; const char *qdevid = NULL; int ret = -1; int maxparams; @@ -19532,8 +19532,8 @@ qemuDomainSetMetadata(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; + g_autoptr(virCaps) caps = NULL; int ret = -1; virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | @@ -20373,10 +20373,10 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn, unsigned int flags) { virQEMUDriverPtr driver = conn->privateData; - VIR_AUTOUNREF(virQEMUCapsPtr) qemuCaps = NULL; + g_autoptr(virQEMUCaps) qemuCaps = NULL; virArch arch; virDomainVirtType virttype; - VIR_AUTOUNREF(virDomainCapsPtr) domCaps = NULL; + g_autoptr(virDomainCaps) domCaps = NULL; virCheckFlags(0, NULL); @@ -20482,7 +20482,7 @@ qemuDomainGetResctrlMonData(virQEMUDriverPtr driver, virDomainResctrlDefPtr resctrl = NULL; virQEMUResctrlMonDataPtr res = NULL; char **features = NULL; - VIR_AUTOUNREF(virCapsPtr) caps = NULL; + g_autoptr(virCaps) caps = NULL; size_t i = 0; size_t j = 0; @@ -20714,7 +20714,7 @@ qemuDomainGetStatsVcpu(virQEMUDriverPtr driver, size_t i; int ret = -1; virVcpuInfoPtr cpuinfo = NULL; - VIR_AUTOFREE(unsigned long long *) cpuwait = NULL; + g_autofree unsigned long long *cpuwait = NULL; if (virTypedParamListAddUInt(params, virDomainDefGetVcpus(dom->def), "vcpu.current") < 0) @@ -21080,7 +21080,7 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk, } for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) { - VIR_AUTOFREE(char *) alias = NULL; + g_autofree char *alias = NULL; if (blockdev) { frontendalias = QEMU_DOMAIN_DISK_PRIVATE(disk)->qomName; @@ -21142,7 +21142,7 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver, virHashTablePtr nodestats = NULL; virJSONValuePtr nodedata = NULL; qemuDomainObjPrivatePtr priv = dom->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV); bool fetchnodedata = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_QUERY_NAMED_BLOCK_NODES) && !blockdev; @@ -21367,8 +21367,8 @@ qemuDomainGetStats(virConnectPtr conn, virDomainStatsRecordPtr *record, unsigned int flags) { - VIR_AUTOFREE(virDomainStatsRecordPtr) tmp = NULL; - VIR_AUTOPTR(virTypedParamList) params = NULL; + g_autofree virDomainStatsRecordPtr tmp = NULL; + g_autoptr(virTypedParamList) params = NULL; size_t i; if (VIR_ALLOC(params) < 0) @@ -21634,7 +21634,7 @@ qemuGetDHCPInterfaces(virDomainPtr dom, int n_leases = 0; size_t i, j; size_t ifaces_count = 0; - VIR_AUTOUNREF(virNetworkPtr) network = NULL; + g_autoptr(virNetwork) network = NULL; char macaddr[VIR_MAC_STRING_BUFLEN]; virDomainInterfacePtr iface = NULL; virNetworkDHCPLeasePtr *leases = NULL; @@ -21837,16 +21837,16 @@ qemuDomainRenameCallback(virDomainObjPtr vm, void *opaque) { virQEMUDriverPtr driver = opaque; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = NULL; + g_autoptr(virQEMUDriverConfig) cfg = NULL; virObjectEventPtr event_new = NULL; virObjectEventPtr event_old = NULL; int ret = -1; - VIR_AUTOFREE(char *) new_dom_name = NULL; - VIR_AUTOFREE(char *) old_dom_name = NULL; - VIR_AUTOFREE(char *) new_dom_cfg_file = NULL; - VIR_AUTOFREE(char *) old_dom_cfg_file = NULL; - VIR_AUTOFREE(char *) new_dom_autostart_link = NULL; - VIR_AUTOFREE(char *) old_dom_autostart_link = NULL; + g_autofree char *new_dom_name = NULL; + g_autofree char *old_dom_name = NULL; + g_autofree char *new_dom_cfg_file = NULL; + g_autofree char *old_dom_cfg_file = NULL; + g_autofree char *new_dom_autostart_link = NULL; + g_autofree char *old_dom_autostart_link = NULL; virCheckFlags(0, ret); @@ -22022,7 +22022,7 @@ qemuDomainGetGuestVcpusParams(virTypedParameterPtr *params, virBitmapPtr vcpus = NULL; virBitmapPtr online = NULL; virBitmapPtr offlinable = NULL; - VIR_AUTOFREE(char *) tmp = NULL; + g_autofree char *tmp = NULL; size_t i; int ret = -1; @@ -22291,7 +22291,7 @@ qemuDomainSetBlockThreshold(virDomainPtr dom, qemuDomainObjPrivatePtr priv; virDomainObjPtr vm = NULL; virStorageSourcePtr src; - VIR_AUTOFREE(char *) nodename = NULL; + g_autofree char *nodename = NULL; int rc; int ret = -1; @@ -22379,7 +22379,7 @@ qemuDomainSetLifecycleAction(virDomainPtr dom, unsigned int flags) { virQEMUDriverPtr driver = dom->conn->privateData; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv; virDomainObjPtr vm = NULL; virDomainDefPtr def = NULL; @@ -22487,7 +22487,7 @@ qemuNodeGetSEVInfo(virConnectPtr conn, unsigned int flags) { virQEMUDriverPtr driver = conn->privateData; - VIR_AUTOUNREF(virQEMUCapsPtr) qemucaps = NULL; + g_autoptr(virQEMUCaps) qemucaps = NULL; if (virNodeGetSevInfoEnsureACL(conn) < 0) return -1; @@ -22518,7 +22518,7 @@ qemuDomainGetSEVMeasurement(virQEMUDriverPtr driver, unsigned int flags) { int ret = -1; - VIR_AUTOFREE(char *) tmp = NULL; + g_autofree char *tmp = NULL; int maxpar = 0; virCheckFlags(VIR_TYPED_PARAM_STRING_OKAY, -1); @@ -22604,7 +22604,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom, qemuAgentPtr agent; int ret = -1; int maxparams = 0; - VIR_AUTOFREE(char *) hostname = NULL; + g_autofree char *hostname = NULL; unsigned int supportedTypes = types; int rc; -- 2.21.0

I just realized by reading a patch from Jano that VIR_AUTOFREE is simply an alias for g_autofree. This means that it is not worth to add more VIR_AUTOFREE() macros, and that it is ok to mix g_autofree with other VIR_ macros such as VIR_AUTOUNREF(). Jano is also removing VIR_AUTOFREE() from the code in his series, which will make this whole series obsolete. I'll re-send this series to not add more VIR_AUTOFREE() in any step of the way. DHB On 10/15/19 5:08 PM, Daniel Henrique Barboza wrote:
changes from v2: - rebased with newer master (67e72053c1) - added an extra patch to convert the existing VIR_AUTO* macros to g_auto* ones, all at once, to avoid the case where a method will have both VIR_AUTO* and g_auto* macros at the same time.
Note: the conversion in patch 10 wasn't 100% due to a handful of methods that I was unable to use g_autoptr. Take for example the method qemuDomainSaveInternal: -- qemuDomainObjPrivatePtr priv = vm->privateData; VIR_AUTOUNREF(virCapsPtr) caps = NULL; virQEMUSaveDataPtr data = NULL; VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; --
Changing the 'cookie' variable to use g_autoptr() causes an error:
make[3]: Entering directory '/home/danielhb/kvm-project/libvirt/src' CC qemu/libvirt_driver_qemu_impl_la-qemu_driver.lo In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from ./internal.h:31, from qemu/qemu_agent.h:24, from qemu/qemu_driver.c:40: qemu/qemu_driver.c: In function 'qemuDomainSaveInternal': qemu/qemu_driver.c:3282:15: error: unknown type name 'qemuDomainSaveCookie_autoptr' 3282 | g_autoptr(qemuDomainSaveCookie) cookie = NULL;
I tried doing it with the 'Ptr' in the name, same error:
CC qemu/libvirt_driver_qemu_impl_la-qemu_driver.lo In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from ./internal.h:31, from qemu/qemu_agent.h:24, from qemu/qemu_driver.c:40: qemu/qemu_driver.c: In function 'qemuDomainSaveInternal': qemu/qemu_driver.c:3282:15: error: unknown type name 'qemuDomainSaveCookiePtr_autoptr' 3282 | g_autoptr(qemuDomainSaveCookiePtr) cookie = NULL;
Similar situation happens with qemuDomainSaveImageStartVM and with qemuSecurityInit methods. They are mentioned in the commit message of patch 10 for reference. These methods are still using VIR_AUTO* macros.
changes from v1: - addressed review concerns made by Erik - added more cleanups, as suggested by Erik
v2: https://www.redhat.com/archives/libvir-list/2019-September/msg01452.html v1: https://www.redhat.com/archives/libvir-list/2019-September/msg00719.html
Daniel Henrique Barboza (10): qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 1/3 qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 2/3 qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 3/3 qemu_driver: use VIR_AUTOUNREF() with virCapsPtr qemu_driver: use VIR_AUTOUNREF() with more pointer types qemu_driver: use VIR_AUTOFREE() with strings 1/3 qemu_driver: use VIR_AUTOFREE() with strings 2/3 qemu_driver: use VIR_AUTOFREE() with strings 3/3 qemu_driver: VIR_AUTOFREE on other scalar pointers qemu_driver.c: use GLib macros
src/qemu/qemu_driver.c | 755 ++++++++++++++--------------------------- 1 file changed, 259 insertions(+), 496 deletions(-)

On Wed, Oct 16, 2019 at 09:24:13AM -0300, Daniel Henrique Barboza wrote:
I just realized by reading a patch from Jano that VIR_AUTOFREE is simply an alias for g_autofree. This means that it is not worth to add more VIR_AUTOFREE() macros, and that it is ok to mix g_autofree with other VIR_ macros such as VIR_AUTOUNREF().
I deleted VIR_AUTOUNREF already. All usage of VIR_AUTOFREE was also removed, but I missed that the macro is definied in viralloc.h, patch removing it is pending. Per our HACKING style: https://libvirt.org/hacking.html#glib while the alloc/free functions should be interchangeable, it is bad style to mix the VIR_ and g_ allocation macros in a single function. I converted the VIR_AUTO_* group that had a GLib alternative, leaving VIR_AUTOSTRINGLIST and VIR_AUTOCLOSE behind. But to convert VIR_APPEND_ELEMENT usage a more fine grained approach will be needed, since it might involve using the GLib container types.
Jano is also removing VIR_AUTOFREE() from the code in his series, which will make this whole series obsolete.
I'll re-send this series to not add more VIR_AUTOFREE() in any step of the way.
DHB
On 10/15/19 5:08 PM, Daniel Henrique Barboza wrote:
changes from v2: - rebased with newer master (67e72053c1) - added an extra patch to convert the existing VIR_AUTO* macros to g_auto* ones, all at once, to avoid the case where a method will have both VIR_AUTO* and g_auto* macros at the same time.
Note: the conversion in patch 10 wasn't 100% due to a handful of methods that I was unable to use g_autoptr. Take for example the method qemuDomainSaveInternal: -- qemuDomainObjPrivatePtr priv = vm->privateData; VIR_AUTOUNREF(virCapsPtr) caps = NULL; virQEMUSaveDataPtr data = NULL; VIR_AUTOUNREF(qemuDomainSaveCookiePtr) cookie = NULL; --
Changing the 'cookie' variable to use g_autoptr() causes an error:
make[3]: Entering directory '/home/danielhb/kvm-project/libvirt/src' CC qemu/libvirt_driver_qemu_impl_la-qemu_driver.lo In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from ./internal.h:31, from qemu/qemu_agent.h:24, from qemu/qemu_driver.c:40: qemu/qemu_driver.c: In function 'qemuDomainSaveInternal': qemu/qemu_driver.c:3282:15: error: unknown type name 'qemuDomainSaveCookie_autoptr' 3282 | g_autoptr(qemuDomainSaveCookie) cookie = NULL;
IIUC the original plan was to use VIR_AUTOPTR for the types needing unref so the cleanup function was defined for them, but then VIR_AUTOUNREF was introduced which always used virObjectUnref. To use g_autoptr with other types, you need to define the CLEANUP function, see: commit df4986b51bc88b65ae7f453814963e4340b168f3 Define G_DEFINE_AUTOPTR_CLEANUP_FUNC for virDomainCheckpointDef My objective was to get rid of the VIR_AUTOUNREF usage, not sure whether introducing g_autoptr for already existing objects until we convert them to GObject.
I tried doing it with the 'Ptr' in the name, same error:
CC qemu/libvirt_driver_qemu_impl_la-qemu_driver.lo In file included from /usr/lib64/glib-2.0/include/glibconfig.h:9, from /usr/include/glib-2.0/glib/gtypes.h:32, from /usr/include/glib-2.0/glib/galloca.h:32, from /usr/include/glib-2.0/glib.h:30, from ./internal.h:31, from qemu/qemu_agent.h:24, from qemu/qemu_driver.c:40: qemu/qemu_driver.c: In function 'qemuDomainSaveInternal': qemu/qemu_driver.c:3282:15: error: unknown type name 'qemuDomainSaveCookiePtr_autoptr' 3282 | g_autoptr(qemuDomainSaveCookiePtr) cookie = NULL;
Similar situation happens with qemuDomainSaveImageStartVM and with qemuSecurityInit methods. They are mentioned in the commit message of patch 10 for reference. These methods are still using VIR_AUTO* macros.
changes from v1: - addressed review concerns made by Erik - added more cleanups, as suggested by Erik
v2: https://www.redhat.com/archives/libvir-list/2019-September/msg01452.html v1: https://www.redhat.com/archives/libvir-list/2019-September/msg00719.html
Daniel Henrique Barboza (10): qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 1/3 qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 2/3 qemu_driver: use VIR_AUTOUNREF() with virQEMUDriverConfigPtr 3/3 qemu_driver: use VIR_AUTOUNREF() with virCapsPtr qemu_driver: use VIR_AUTOUNREF() with more pointer types qemu_driver: use VIR_AUTOFREE() with strings 1/3 qemu_driver: use VIR_AUTOFREE() with strings 2/3 qemu_driver: use VIR_AUTOFREE() with strings 3/3 qemu_driver: VIR_AUTOFREE on other scalar pointers
qemu_driver.c: use GLib macros
Fixing newly added lines seems odd, especially since you'll be replacing the exact text that you added earlier. Jano
participants (2)
-
Daniel Henrique Barboza
-
Ján Tomko