[libvirt] [PATCH 0/3] use VIR_AUTOFREE() with strings in qemu_hotplug.c

Similar work to [1], but this time someone already changed the virQEMUDriverConfigPtr to use VIR_AUTOUNREF() in this file, which is less work pending to do, which is good. This change in particular will royally mess up with my rebases, but it's for a good cause. [1] https://www.redhat.com/archives/libvir-list/2019-September/msg00719.html Daniel Henrique Barboza (3): qemu_hotplug.c: use VIR_AUTOFREE() in strings 1/3 qemu_hotplug.c: use VIR_AUTOFREE() in strings 2/3 qemu_hotplug.c: use VIR_AUTOFREE() in strings 3/3 src/qemu/qemu_hotplug.c | 286 +++++++++++++--------------------------- 1 file changed, 95 insertions(+), 191 deletions(-) -- 2.21.0

Using VIR_AUTOFREE() spare us from calling VIR_VREE() and sometimes a whole 'cleanup' label can be erased as well. There are quite a few strings in qemu_hotplug.c to be auto-freed. This is the first part of this change. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_hotplug.c | 106 +++++++++++++--------------------------- 1 file changed, 33 insertions(+), 73 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 62e505b779..5b1639b48d 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -136,20 +136,15 @@ static int qemuDomainAttachZPCIDevice(qemuMonitorPtr mon, virDomainDeviceInfoPtr info) { - char *devstr_zpci = NULL; - int ret = -1; + VIR_AUTOFREE(char *) devstr_zpci = NULL; if (!(devstr_zpci = qemuBuildZPCIDevStr(info))) - goto cleanup; + return -1; if (qemuMonitorAddDevice(mon, devstr_zpci) < 0) - goto cleanup; - - ret = 0; + return -1; - cleanup: - VIR_FREE(devstr_zpci); - return ret; + return 0; } @@ -157,20 +152,15 @@ static int qemuDomainDetachZPCIDevice(qemuMonitorPtr mon, virDomainDeviceInfoPtr info) { - char *zpciAlias = NULL; - int ret = -1; + VIR_AUTOFREE(char *) zpciAlias = NULL; if (virAsprintf(&zpciAlias, "zpci%d", info->addr.pci.zpci.uid) < 0) - goto cleanup; + return -1; if (qemuMonitorDelDevice(mon, zpciAlias) < 0) - goto cleanup; - - ret = 0; + return -1; - cleanup: - VIR_FREE(zpciAlias); - return ret; + return 0; } @@ -517,7 +507,7 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); VIR_AUTOPTR(qemuBlockStorageSourceChainData) newbackend = NULL; VIR_AUTOPTR(qemuBlockStorageSourceChainData) oldbackend = NULL; - char *nodename = NULL; + VIR_AUTOFREE(char *) nodename = NULL; int rc; int ret = -1; @@ -572,7 +562,6 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, ret = 0; cleanup: - VIR_FREE(nodename); return ret; } @@ -823,7 +812,7 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, { int ret = -1; const char* type = virDomainControllerTypeToString(controller->type); - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_CONTROLLER, { .controller = controller } }; @@ -890,7 +879,6 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, if (ret != 0 && releaseaddr) qemuDomainReleaseDeviceAddress(vm, &controller->info); - VIR_FREE(devstr); return ret; } @@ -1156,8 +1144,8 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, int *vhostfd = NULL; size_t vhostfdSize = 0; size_t queueSize = 0; - char *nicstr = NULL; - char *netstr = NULL; + VIR_AUTOFREE(char *) nicstr = NULL; + VIR_AUTOFREE(char *) netstr = NULL; int ret = -1; bool releaseaddr = false; bool iface_connected = false; @@ -1166,10 +1154,10 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); virDomainCCWAddressSetPtr ccwaddrs = NULL; size_t i; - char *charDevAlias = NULL; + VIR_AUTOFREE(char *) charDevAlias = NULL; bool charDevPlugged = false; bool netdevPlugged = false; - char *netdev_name; + VIR_AUTOFREE(char *) netdev_name = NULL; virConnectPtr conn = NULL; virErrorPtr save_err = NULL; @@ -1499,8 +1487,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, virErrorRestore(&save_err); } - VIR_FREE(nicstr); - VIR_FREE(netstr); for (i = 0; tapfd && i < tapfdSize; i++) { VIR_FORCE_CLOSE(tapfd[i]); if (tapfdName) @@ -1515,7 +1501,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, } VIR_FREE(vhostfd); VIR_FREE(vhostfdName); - VIR_FREE(charDevAlias); virObjectUnref(conn); virDomainCCWAddressSetFree(ccwaddrs); VIR_FORCE_CLOSE(slirpfd); @@ -1539,7 +1524,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, VIR_WARN("Failed to remove network backend for netdev %s", netdev_name); ignore_value(qemuDomainObjExitMonitor(driver, vm)); - VIR_FREE(netdev_name); } virErrorRestore(&originalError); goto cleanup; @@ -1556,7 +1540,7 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, { .hostdev = hostdev } }; virDomainDeviceInfoPtr info = hostdev->info; int ret; - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; bool releaseaddr = false; bool teardowncgroup = false; bool teardownlabel = false; @@ -1658,8 +1642,6 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, vm->def->hostdevs[vm->def->nhostdevs++] = hostdev; - VIR_FREE(devstr); - return 0; error: @@ -1679,8 +1661,6 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, qemuHostdevReAttachPCIDevices(driver, vm->def->name, &hostdev, 1); - VIR_FREE(devstr); - cleanup: return -1; } @@ -1726,7 +1706,7 @@ qemuDomainAddTLSObjects(virQEMUDriverPtr driver, { qemuDomainObjPrivatePtr priv = vm->privateData; virErrorPtr orig_err; - char *secAlias = NULL; + VIR_AUTOFREE(char *) secAlias = NULL; if (!tlsProps && !secProps) return 0; @@ -1742,8 +1722,6 @@ qemuDomainAddTLSObjects(virQEMUDriverPtr driver, qemuMonitorAddObject(priv->mon, tlsProps, NULL) < 0) goto error; - VIR_FREE(secAlias); - return qemuDomainObjExitMonitor(driver, vm); error: @@ -1751,7 +1729,6 @@ qemuDomainAddTLSObjects(virQEMUDriverPtr driver, ignore_value(qemuDomainObjExitMonitor(driver, vm)); virErrorRestore(&orig_err); qemuDomainDelTLSObjects(driver, vm, asyncJob, secAlias, NULL); - VIR_FREE(secAlias); return -1; } @@ -1850,20 +1827,18 @@ qemuDomainDelChardevTLSObjects(virQEMUDriverPtr driver, virDomainChrSourceDefPtr dev, const char *inAlias) { - int ret = -1; VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; - char *tlsAlias = NULL; - char *secAlias = NULL; + VIR_AUTOFREE(char *) tlsAlias = NULL; + VIR_AUTOFREE(char *) secAlias = NULL; if (dev->type != VIR_DOMAIN_CHR_TYPE_TCP || dev->data.tcp.haveTLS != VIR_TRISTATE_BOOL_YES) { - ret = 0; - goto cleanup; + return 0; } if (!(tlsAlias = qemuAliasTLSObjFromSrcAlias(inAlias))) - goto cleanup; + return -1; /* Best shot at this as the secinfo is destroyed after process launch * and this path does not recreate it. Thus, if the config has the @@ -1871,7 +1846,7 @@ qemuDomainDelChardevTLSObjects(virQEMUDriverPtr driver, * secAlias which we'll attempt to destroy. */ if (cfg->chardevTLSx509secretUUID && !(secAlias = qemuDomainGetSecretAESAlias(inAlias, false))) - goto cleanup; + return -1; qemuDomainObjEnterMonitor(driver, vm); @@ -1880,14 +1855,9 @@ qemuDomainDelChardevTLSObjects(virQEMUDriverPtr driver, ignore_value(qemuMonitorDelObject(priv->mon, secAlias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; - - ret = 0; + return -1; - cleanup: - VIR_FREE(tlsAlias); - VIR_FREE(secAlias); - return ret; + return 0; } @@ -1898,10 +1868,10 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, int ret = -1; qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDefPtr def = vm->def; - char *charAlias = NULL; - char *devstr = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; + VIR_AUTOFREE(char *) devstr = NULL; bool chardevAdded = false; - char *tlsAlias = NULL; + VIR_AUTOFREE(char *) tlsAlias = NULL; const char *secAlias = NULL; bool need_release = false; virErrorPtr orig_err; @@ -1948,9 +1918,6 @@ int qemuDomainAttachRedirdevDevice(virQEMUDriverPtr driver, cleanup: if (ret < 0 && need_release) qemuDomainReleaseDeviceAddress(vm, &redirdev->info); - VIR_FREE(tlsAlias); - VIR_FREE(charAlias); - VIR_FREE(devstr); return ret; exit_monitor: @@ -2134,14 +2101,14 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virErrorPtr orig_err; virDomainDefPtr vmdef = vm->def; - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; virDomainChrSourceDefPtr dev = chr->source; - char *charAlias = NULL; + VIR_AUTOFREE(char *)charAlias = NULL; bool chardevAttached = false; bool teardowncgroup = false; bool teardowndevice = false; bool teardownlabel = false; - char *tlsAlias = NULL; + VIR_AUTOFREE(char *) tlsAlias = NULL; const char *secAlias = NULL; bool need_release = false; bool guestfwd = false; @@ -2222,9 +2189,6 @@ int qemuDomainAttachChrDevice(virQEMUDriverPtr driver, if (teardowndevice && qemuDomainNamespaceTeardownChardev(vm, chr) < 0) VIR_WARN("Unable to remove chr device from /dev"); } - VIR_FREE(tlsAlias); - VIR_FREE(charAlias); - VIR_FREE(devstr); return ret; exit_monitor: @@ -2249,10 +2213,10 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_RNG, { .rng = rng } }; virErrorPtr orig_err; - char *devstr = NULL; - char *charAlias = NULL; - char *objAlias = NULL; - char *tlsAlias = NULL; + VIR_AUTOFREE(char *) devstr = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; + VIR_AUTOFREE(char *) objAlias = NULL; + VIR_AUTOFREE(char *) tlsAlias = NULL; const char *secAlias = NULL; bool releaseaddr = false; bool teardowncgroup = false; @@ -2338,10 +2302,6 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, VIR_WARN("Unable to remove chr device from /dev"); } - VIR_FREE(tlsAlias); - VIR_FREE(charAlias); - VIR_FREE(objAlias); - VIR_FREE(devstr); return ret; exit_monitor: -- 2.21.0

On Wed, Sep 18, 2019 at 04:53:06PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() spare us from calling VIR_VREE() and sometimes a whole 'cleanup' label can be erased as well.
There are quite a few strings in qemu_hotplug.c to be auto-freed. This is the first part of this change.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- [...]
@@ -517,7 +507,7 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk); VIR_AUTOPTR(qemuBlockStorageSourceChainData) newbackend = NULL; VIR_AUTOPTR(qemuBlockStorageSourceChainData) oldbackend = NULL; - char *nodename = NULL; + VIR_AUTOFREE(char *) nodename = NULL; int rc; int ret = -1;
@@ -572,7 +562,6 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver, ret = 0;
cleanup:
^This cleanup label can be dropped as well after the change. Erik

Using VIR_AUTOFREE() spare us from calling VIR_VREE() and sometimes a whole 'cleanup' label can be erased as well. There are quite a few strings in qemu_hotplug.c to be auto-freed. This is the second part of this change. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_hotplug.c | 87 ++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 57 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 5b1639b48d..787a4f01f5 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -2340,8 +2340,8 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver, VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); unsigned long long oldmem = virDomainDefGetMemoryTotal(vm->def); unsigned long long newmem = oldmem + mem->size; - char *devstr = NULL; - char *objalias = NULL; + VIR_AUTOFREE(char *) devstr = NULL; + VIR_AUTOFREE(char *) objalias = NULL; bool objAdded = false; bool teardownlabel = false; bool teardowncgroup = false; @@ -2438,8 +2438,6 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver, } virJSONValueFree(props); - VIR_FREE(devstr); - VIR_FREE(objalias); virDomainMemoryDefFree(mem); return ret; @@ -2478,7 +2476,7 @@ qemuDomainAttachHostUSBDevice(virQEMUDriverPtr driver, virDomainHostdevDefPtr hostdev) { qemuDomainObjPrivatePtr priv = vm->privateData; - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; bool added = false; bool teardowncgroup = false; bool teardownlabel = false; @@ -2540,7 +2538,6 @@ qemuDomainAttachHostUSBDevice(virQEMUDriverPtr driver, qemuHostdevReAttachUSBDevices(driver, vm->def->name, &hostdev, 1); virDomainUSBAddressRelease(priv->usbaddrs, hostdev->info); } - VIR_FREE(devstr); return ret; } @@ -2554,10 +2551,10 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver, int ret = -1; qemuDomainObjPrivatePtr priv = vm->privateData; virErrorPtr orig_err; - char *devstr = NULL; - char *drvstr = NULL; - char *drivealias = NULL; - char *secobjAlias = NULL; + VIR_AUTOFREE(char *) devstr = NULL; + VIR_AUTOFREE(char *) drvstr = NULL; + VIR_AUTOFREE(char *) drivealias = NULL; + VIR_AUTOFREE(char *) secobjAlias = NULL; bool teardowncgroup = false; bool teardownlabel = false; bool teardowndevice = false; @@ -2659,10 +2656,6 @@ qemuDomainAttachHostSCSIDevice(virQEMUDriverPtr driver, } qemuDomainSecretHostdevDestroy(hostdev); virJSONValueFree(secobjProps); - VIR_FREE(secobjAlias); - VIR_FREE(drivealias); - VIR_FREE(drvstr); - VIR_FREE(devstr); return ret; exit_monitor: @@ -2692,9 +2685,9 @@ qemuDomainAttachSCSIVHostDevice(virQEMUDriverPtr driver, virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_HOSTDEV, { .hostdev = hostdev } }; virDomainCCWAddressSetPtr ccwaddrs = NULL; - char *vhostfdName = NULL; + VIR_AUTOFREE(char *) vhostfdName = NULL; int vhostfd = -1; - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; bool teardowncgroup = false; bool teardownlabel = false; bool teardowndevice = false; @@ -2790,8 +2783,6 @@ qemuDomainAttachSCSIVHostDevice(virQEMUDriverPtr driver, virDomainCCWAddressSetFree(ccwaddrs); VIR_FORCE_CLOSE(vhostfd); - VIR_FREE(vhostfdName); - VIR_FREE(devstr); return ret; } @@ -2802,7 +2793,7 @@ qemuDomainAttachMediatedDevice(virQEMUDriverPtr driver, virDomainHostdevDefPtr hostdev) { int ret = -1; - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; bool added = false; bool teardowncgroup = false; bool teardownlabel = false; @@ -2887,7 +2878,6 @@ qemuDomainAttachMediatedDevice(virQEMUDriverPtr driver, 1); qemuDomainReleaseDeviceAddress(vm, hostdev->info); } - VIR_FREE(devstr); return ret; } @@ -2952,9 +2942,9 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver, virDomainShmemDefPtr shmem) { int ret = -1; - char *shmstr = NULL; - char *charAlias = NULL; - char *memAlias = NULL; + VIR_AUTOFREE(char *) shmstr = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; + VIR_AUTOFREE(char *) memAlias = NULL; bool release_backing = false; bool release_address = true; virErrorPtr orig_err = NULL; @@ -3043,9 +3033,6 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver, qemuDomainReleaseDeviceAddress(vm, &shmem->info); virJSONValueFree(props); - VIR_FREE(memAlias); - VIR_FREE(charAlias); - VIR_FREE(shmstr); return ret; @@ -3077,7 +3064,7 @@ qemuDomainAttachWatchdog(virQEMUDriverPtr driver, virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_WATCHDOG, { .watchdog = watchdog } }; virDomainWatchdogAction actualAction = watchdog->action; const char *actionStr = NULL; - char *watchdogstr = NULL; + VIR_AUTOFREE(char *) watchdogstr = NULL; bool releaseAddress = false; int rv; @@ -3134,7 +3121,6 @@ qemuDomainAttachWatchdog(virQEMUDriverPtr driver, cleanup: if (releaseAddress) qemuDomainReleaseDeviceAddress(vm, &watchdog->info); - VIR_FREE(watchdogstr); return ret; } @@ -3145,7 +3131,7 @@ qemuDomainAttachInputDevice(virQEMUDriverPtr driver, virDomainInputDefPtr input) { int ret = -1; - char *devstr = NULL; + VIR_AUTOFREE(char *) devstr = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_INPUT, { .input = input } }; @@ -3229,7 +3215,6 @@ qemuDomainAttachInputDevice(virQEMUDriverPtr driver, virErrorRestore(&originalError); } - VIR_FREE(devstr); return ret; exit_monitor: @@ -3253,8 +3238,8 @@ qemuDomainAttachVsockDevice(virQEMUDriverPtr driver, virErrorPtr originalError = NULL; const char *fdprefix = "vsockfd"; bool releaseaddr = false; - char *fdname = NULL; - char *devstr = NULL; + VIR_AUTOFREE(char *) fdname = NULL; + VIR_AUTOFREE(char *) devstr = NULL; int ret = -1; if (vm->def->vsock) { @@ -3305,8 +3290,6 @@ qemuDomainAttachVsockDevice(virQEMUDriverPtr driver, virErrorRestore(&originalError); } - VIR_FREE(devstr); - VIR_FREE(fdname); return ret; exit_monitor: @@ -3986,22 +3969,21 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; time_t now = time(NULL); const char *expire; - char *validTo = NULL; + VIR_AUTOFREE(char *) validTo = NULL; const char *connected = NULL; const char *password; int ret = -1; - if (!auth->passwd && !defaultPasswd) { - ret = 0; - goto cleanup; - } + if (!auth->passwd && !defaultPasswd) + return ret; + password = auth->passwd ? auth->passwd : defaultPasswd; if (auth->connected) connected = virDomainGraphicsAuthConnectedTypeToString(auth->connected); if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) - goto cleanup; + return ret; ret = qemuMonitorSetPassword(priv->mon, type, password, connected); if (ret != 0) @@ -4023,8 +4005,7 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver, end_job: if (qemuDomainObjExitMonitor(driver, vm) < 0) ret = -1; - cleanup: - VIR_FREE(validTo); + return ret; } @@ -4362,7 +4343,7 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; unsigned long long oldmem = virDomainDefGetMemoryTotal(vm->def); unsigned long long newmem = oldmem - mem->size; - char *backendAlias = NULL; + VIR_AUTOFREE(char *) backendAlias = NULL; int rc; int idx; @@ -4377,8 +4358,6 @@ qemuDomainRemoveMemoryDevice(virQEMUDriverPtr driver, if (qemuDomainObjExitMonitor(driver, vm) < 0) rc = -1; - VIR_FREE(backendAlias); - virDomainAuditMemory(vm, oldmem, newmem, "update", rc == 0); if (rc < 0) return -1; @@ -4462,10 +4441,9 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, { virDomainNetDefPtr net = NULL; size_t i; - int ret = -1; qemuDomainObjPrivatePtr priv = vm->privateData; - char *drivealias = NULL; - char *objAlias = NULL; + VIR_AUTOFREE(char *) drivealias = NULL; + VIR_AUTOFREE(char *) objAlias = NULL; bool is_vfio = false; VIR_DEBUG("Removing host device %s from domain %p %s", @@ -4481,7 +4459,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi; if (!(drivealias = qemuAliasFromHostdev(hostdev))) - goto cleanup; + return -1; /* Look for the markers that the iSCSI hostdev was added with a * secret object to manage the username/password. If present, let's @@ -4490,7 +4468,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_ISCSI_PASSWORD_SECRET) && qemuDomainStorageSourceHasAuth(iscsisrc->src)) { if (!(objAlias = qemuDomainGetSecretAESAlias(hostdev->info->alias, false))) - goto cleanup; + return -1; } qemuDomainObjEnterMonitor(driver, vm); @@ -4501,7 +4479,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, ignore_value(qemuMonitorDelObject(priv->mon, objAlias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; } if (hostdev->parentnet) { @@ -4572,12 +4550,7 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver, virDomainNetDefFree(net); } - ret = 0; - - cleanup: - VIR_FREE(drivealias); - VIR_FREE(objAlias); - return ret; + return 0; } -- 2.21.0

On Wed, Sep 18, 2019 at 04:53:07PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() spare us from calling VIR_VREE() and sometimes a whole 'cleanup' label can be erased as well.
There are quite a few strings in qemu_hotplug.c to be auto-freed. This is the second part of this change.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- [...]
exit_monitor: @@ -3986,22 +3969,21 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; time_t now = time(NULL); const char *expire; - char *validTo = NULL; + VIR_AUTOFREE(char *) validTo = NULL; const char *connected = NULL; const char *password; int ret = -1;
- if (!auth->passwd && !defaultPasswd) { - ret = 0; - goto cleanup; - } + if (!auth->passwd && !defaultPasswd) + return ret;
Not quite, originally ret == 0 upon return, now it's -1. Erik

Using VIR_AUTOFREE() spare us from calling VIR_VREE() and sometimes a whole 'cleanup' label can be erased as well. There are quite a few strings in qemu_hotplug.c to be auto-freed. This is the last part of this change. Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> --- src/qemu/qemu_hotplug.c | 93 ++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 61 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 787a4f01f5..58921fc955 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -4561,17 +4561,15 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver, { VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg = virQEMUDriverGetConfig(driver); qemuDomainObjPrivatePtr priv = vm->privateData; - char *hostnet_name = NULL; - char *charDevAlias = NULL; + VIR_AUTOFREE(char *) hostnet_name = NULL; + VIR_AUTOFREE(char *) charDevAlias = NULL; size_t i; - int ret = -1; int actualType = virDomainNetGetActualType(net); if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) { /* this function handles all hostdev and netdev cleanup */ - ret = qemuDomainRemoveHostDevice(driver, vm, - virDomainNetGetActualHostdev(net)); - goto cleanup; + return qemuDomainRemoveHostDevice(driver, vm, + virDomainNetGetActualHostdev(net)); } VIR_DEBUG("Removing network interface %s from domain %p %s", @@ -4579,7 +4577,7 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver, if (virAsprintf(&hostnet_name, "host%s", net->info.alias) < 0 || !(charDevAlias = qemuAliasChardevFromDevAlias(net->info.alias))) - goto cleanup; + return -1; if (virDomainNetGetActualBandwidth(net) && virNetDevSupportBandwidth(virDomainNetGetActualType(net)) && @@ -4596,9 +4594,9 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver, qemuDomainObjEnterMonitor(driver, vm); if (qemuMonitorRemoveNetdev(priv->mon, hostnet_name) < 0) { if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; virDomainAuditNet(vm, net, NULL, "detach", false); - goto cleanup; + return -1; } if (actualType == VIR_DOMAIN_NET_TYPE_VHOSTUSER) { @@ -4612,7 +4610,7 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver, } if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; if (QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp) qemuSlirpStop(QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp, vm, driver, net, true); @@ -4656,12 +4654,7 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver, } } virDomainNetDefFree(net); - ret = 0; - - cleanup: - VIR_FREE(charDevAlias); - VIR_FREE(hostnet_name); - return ret; + return 0; } @@ -4672,32 +4665,31 @@ qemuDomainRemoveChrDevice(virQEMUDriverPtr driver, bool monitor) { virObjectEventPtr event; - char *charAlias = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; - int ret = -1; int rc = 0; VIR_DEBUG("Removing character device %s from domain %p %s", chr->info.alias, vm, vm->def->name); if (!(charAlias = qemuAliasChardevFromDevAlias(chr->info.alias))) - goto cleanup; + return -1; if (monitor) { qemuDomainObjEnterMonitor(driver, vm); rc = qemuMonitorDetachCharDev(priv->mon, charAlias); if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; } if (rc == 0 && qemuDomainDelChardevTLSObjects(driver, vm, chr->source, charAlias) < 0) - goto cleanup; + return -1; virDomainAuditChardev(vm, chr, NULL, "detach", rc == 0); if (rc < 0) - goto cleanup; + return -1; if (qemuTeardownChardevCgroup(vm, chr) < 0) VIR_WARN("Failed to remove chr device cgroup ACL"); @@ -4719,11 +4711,7 @@ qemuDomainRemoveChrDevice(virQEMUDriverPtr driver, virObjectEventStateQueue(driver->domainEventState, event); virDomainChrDefFree(chr); - ret = 0; - - cleanup: - VIR_FREE(charAlias); - return ret; + return 0; } @@ -4732,11 +4720,10 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainRNGDefPtr rng) { - char *charAlias = NULL; - char *objAlias = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; + VIR_AUTOFREE(char *) objAlias = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; ssize_t idx; - int ret = -1; int rc = 0; VIR_DEBUG("Removing RNG device %s from domain %p %s", @@ -4744,10 +4731,10 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, if (virAsprintf(&objAlias, "obj%s", rng->info.alias) < 0) - goto cleanup; + return -1; if (!(charAlias = qemuAliasChardevFromDevAlias(rng->info.alias))) - goto cleanup; + return -1; qemuDomainObjEnterMonitor(driver, vm); @@ -4761,7 +4748,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, rc = -1; if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && rc == 0 && @@ -4772,7 +4759,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, virDomainAuditRNG(vm, rng, NULL, "detach", rc == 0); if (rc < 0) - goto cleanup; + return -1; if (qemuTeardownRNGCgroup(vm, rng) < 0) VIR_WARN("Failed to remove RNG device cgroup ACL"); @@ -4784,12 +4771,7 @@ qemuDomainRemoveRNGDevice(virQEMUDriverPtr driver, virDomainRNGRemove(vm->def, idx); qemuDomainReleaseDeviceAddress(vm, &rng->info); virDomainRNGDefFree(rng); - ret = 0; - - cleanup: - VIR_FREE(charAlias); - VIR_FREE(objAlias); - return ret; + return 0; } @@ -4799,10 +4781,9 @@ qemuDomainRemoveShmemDevice(virQEMUDriverPtr driver, virDomainShmemDefPtr shmem) { int rc; - int ret = -1; ssize_t idx = -1; - char *charAlias = NULL; - char *memAlias = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; + VIR_AUTOFREE(char *) memAlias = NULL; qemuDomainObjPrivatePtr priv = vm->privateData; VIR_DEBUG("Removing shmem device %s from domain %p %s", @@ -4824,24 +4805,19 @@ qemuDomainRemoveShmemDevice(virQEMUDriverPtr driver, rc = qemuMonitorDelObject(priv->mon, memAlias); if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; virDomainAuditShmem(vm, shmem, "detach", rc == 0); if (rc < 0) - goto cleanup; + return -1; if ((idx = virDomainShmemDefFind(vm->def, shmem)) >= 0) virDomainShmemDefRemove(vm->def, idx); qemuDomainReleaseDeviceAddress(vm, &shmem->info); virDomainShmemDefFree(shmem); - ret = 0; - cleanup: - VIR_FREE(charAlias); - VIR_FREE(memAlias); - - return ret; + return 0; } @@ -4908,15 +4884,14 @@ qemuDomainRemoveRedirdevDevice(virQEMUDriverPtr driver, virDomainRedirdevDefPtr dev) { qemuDomainObjPrivatePtr priv = vm->privateData; - char *charAlias = NULL; + VIR_AUTOFREE(char *) charAlias = NULL; ssize_t idx; - int ret = -1; VIR_DEBUG("Removing redirdev device %s from domain %p %s", dev->info.alias, vm, vm->def->name); if (!(charAlias = qemuAliasChardevFromDevAlias(dev->info.alias))) - goto cleanup; + return -1; qemuDomainObjEnterMonitor(driver, vm); /* DeviceDel from Detach may remove chardev, @@ -4925,10 +4900,10 @@ qemuDomainRemoveRedirdevDevice(virQEMUDriverPtr driver, ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) - goto cleanup; + return -1; if (qemuDomainDelChardevTLSObjects(driver, vm, dev->source, charAlias) < 0) - goto cleanup; + return -1; virDomainAuditRedirdev(vm, dev, "detach", true); @@ -4937,11 +4912,7 @@ qemuDomainRemoveRedirdevDevice(virQEMUDriverPtr driver, qemuDomainReleaseDeviceAddress(vm, &dev->info); virDomainRedirdevDefFree(dev); - ret = 0; - - cleanup: - VIR_FREE(charAlias); - return ret; + return 0; } -- 2.21.0

On Wed, Sep 18, 2019 at 04:53:08PM -0300, Daniel Henrique Barboza wrote:
Using VIR_AUTOFREE() spare us from calling VIR_VREE() and sometimes a whole 'cleanup' label can be erased as well.
There are quite a few strings in qemu_hotplug.c to be auto-freed. This is the last part of this change.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> ---
I think that since all 3 patches are touching the same module, all of them can be squashed into 1 (for review purposes the split was good though). I'll fix the nits I raised in 1 and 2, squash, adjust the commit message and push. Reviewed-by: Erik Skultety <eskultet@redhat.com>
participants (2)
-
Daniel Henrique Barboza
-
Erik Skultety