Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/qemu/qemu_conf.c | 130 +++++++++++++------------------------------ 1 file changed, 40 insertions(+), 90 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f11df03cf8..c3255a6f54 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -181,37 +181,26 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool privileged) virGetGroupID("tss", &cfg->swtpm_group) < 0) cfg->swtpm_group = 0; /* fall back to root */ } else { - char *rundir; - char *cachedir; + VIR_AUTOFREE(char *) rundir = NULL; + VIR_AUTOFREE(char *) cachedir = NULL; cachedir = virGetUserCacheDirectory(); if (!cachedir) goto error; - if (virAsprintf(&cfg->logDir, - "%s/qemu/log", cachedir) < 0) { - VIR_FREE(cachedir); + if (virAsprintf(&cfg->logDir, "%s/qemu/log", cachedir) < 0) goto error; - } - if (virAsprintf(&cfg->swtpmLogDir, - "%s/qemu/log", cachedir) < 0) { - VIR_FREE(cachedir); + if (virAsprintf(&cfg->swtpmLogDir, "%s/qemu/log", cachedir) < 0) goto error; - } - if (virAsprintf(&cfg->cacheDir, "%s/qemu/cache", cachedir) < 0) { - VIR_FREE(cachedir); + if (virAsprintf(&cfg->cacheDir, "%s/qemu/cache", cachedir) < 0) goto error; - } - VIR_FREE(cachedir); rundir = virGetUserRuntimeDirectory(); if (!rundir) goto error; if (virAsprintf(&cfg->stateDir, "%s/qemu/run", rundir) < 0) { - VIR_FREE(rundir); goto error; } - VIR_FREE(rundir); if (virAsprintf(&cfg->swtpmStateDir, "%s/swtpm", cfg->stateDir) < 0) goto error; @@ -1261,7 +1250,7 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver) { size_t i, j; virCapsPtr caps; - virSecurityManagerPtr *sec_managers = NULL; + VIR_AUTOFREE(virSecurityManagerPtr) *sec_managers = NULL; /* Security driver data */ const char *doi, *model, *lbl, *type; const int virtTypes[] = {VIR_DOMAIN_VIRT_KVM, @@ -1308,12 +1297,10 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver) VIR_DEBUG("Initialized caps for security driver \"%s\" with " "DOI \"%s\"", model, doi); } - VIR_FREE(sec_managers); return caps; error: - VIR_FREE(sec_managers); virObjectUnref(caps); return NULL; } @@ -1485,31 +1472,26 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices, const char *device_path, int sgio) { - char *sysfs_path = NULL; - char *key = NULL; + VIR_AUTOFREE(char *) sysfs_path = NULL; + VIR_AUTOFREE(char *) key = NULL; int val; - int ret = -1; if (!(sysfs_path = virGetUnprivSGIOSysfsPath(device_path, NULL))) - goto cleanup; + return -1; /* It can't be conflict if unpriv_sgio is not supported by kernel. */ - if (!virFileExists(sysfs_path)) { - ret = 0; - goto cleanup; - } + if (!virFileExists(sysfs_path)) + return 0; if (!(key = qemuGetSharedDeviceKey(device_path))) - goto cleanup; + return -1; /* It can't be conflict if no other domain is sharing it. */ - if (!(virHashLookup(sharedDevices, key))) { - ret = 0; - goto cleanup; - } + if (!(virHashLookup(sharedDevices, key))) + return 0; if (virGetDeviceUnprivSGIO(device_path, NULL, &val) < 0) - goto cleanup; + return -1; /* Error message on failure needs to be handled in caller * since there is more specific knowledge of device @@ -1519,16 +1501,10 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices, sgio == VIR_DOMAIN_DEVICE_SGIO_DEFAULT)) || (val == 1 && sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED))) { - ret = -2; - goto cleanup; + return -2; } - ret = 0; - - cleanup: - VIR_FREE(sysfs_path); - VIR_FREE(key); - return ret; + return 0; } @@ -1674,7 +1650,7 @@ qemuSharedDiskAddRemoveInternal(virQEMUDriverPtr driver, const char *name, bool addDisk) { - char *key = NULL; + VIR_AUTOFREE(char *) key = NULL; int ret = -1; if (virStorageSourceIsEmpty(disk->src) || @@ -1701,7 +1677,6 @@ qemuSharedDiskAddRemoveInternal(virQEMUDriverPtr driver, ret = 0; cleanup: qemuDriverUnlock(driver); - VIR_FREE(key); return ret; } @@ -1739,7 +1714,7 @@ qemuGetHostdevPath(virDomainHostdevDefPtr hostdev) { virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi; virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host; - char *dev_name = NULL; + VIR_AUTOFREE(char *) dev_name = NULL; char *dev_path = NULL; if (!(dev_name = virSCSIDeviceGetDevName(NULL, @@ -1747,12 +1722,9 @@ qemuGetHostdevPath(virDomainHostdevDefPtr hostdev) scsihostsrc->bus, scsihostsrc->target, scsihostsrc->unit))) - goto cleanup; + return NULL; ignore_value(virAsprintf(&dev_path, "/dev/%s", dev_name)); - - cleanup: - VIR_FREE(dev_name); return dev_path; } @@ -1763,18 +1735,16 @@ qemuSharedHostdevAddRemoveInternal(virQEMUDriverPtr driver, const char *name, bool addDevice) { - char *dev_path = NULL; - char *key = NULL; + VIR_AUTOFREE(char *) dev_path = NULL; + VIR_AUTOFREE(char *) key = NULL; int ret = -1; if (!qemuIsSharedHostdev(hostdev)) return 0; - if (!(dev_path = qemuGetHostdevPath(hostdev))) - goto cleanup; - - if (!(key = qemuGetSharedDeviceKey(dev_path))) - goto cleanup; + if (!(dev_path = qemuGetHostdevPath(hostdev)) || + !(key = qemuGetSharedDeviceKey(dev_path))) + return -1; qemuDriverLock(driver); @@ -1785,11 +1755,7 @@ qemuSharedHostdevAddRemoveInternal(virQEMUDriverPtr driver, qemuDriverUnlock(driver); - cleanup: - VIR_FREE(dev_path); - VIR_FREE(key); return ret; - } static int @@ -1863,10 +1829,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) { virDomainDiskDefPtr disk = NULL; virDomainHostdevDefPtr hostdev = NULL; - char *sysfs_path = NULL; + VIR_AUTOFREE(char *) sysfs_path = NULL; const char *path = NULL; int val = -1; - int ret = -1; /* "sgio" is only valid for block disk; cdrom * and floopy disk can have empty source. @@ -1889,7 +1854,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("'sgio' is not supported for SCSI " "generic device yet ")); - goto cleanup; + return -1; } return 0; @@ -1898,7 +1863,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) } if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, NULL))) - goto cleanup; + return -1; /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */ val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED); @@ -1909,13 +1874,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) */ if ((virFileExists(sysfs_path) || val == 1) && virSetDeviceUnprivSGIO(path, NULL, val) < 0) - goto cleanup; + return -1; - ret = 0; - - cleanup: - VIR_FREE(sysfs_path); - return ret; + return 0; } int qemuDriverAllocateID(virQEMUDriverPtr driver) @@ -1951,14 +1912,12 @@ char * qemuGetDomainHugepagePath(const virDomainDef *def, virHugeTLBFSPtr hugepage) { - char *base = qemuGetBaseHugepagePath(hugepage); - char *domPath = virDomainDefGetShortName(def); + VIR_AUTOFREE(char *) base = qemuGetBaseHugepagePath(hugepage); + VIR_AUTOFREE(char *) domPath = virDomainDefGetShortName(def); char *ret = NULL; if (base && domPath) ignore_value(virAsprintf(&ret, "%s/%s", base, domPath)); - VIR_FREE(domPath); - VIR_FREE(base); return ret; } @@ -2019,20 +1978,15 @@ qemuGetMemoryBackingDomainPath(const virDomainDef *def, virQEMUDriverConfigPtr cfg, char **path) { - char *shortName = NULL; - char *base = NULL; - int ret = -1; + VIR_AUTOFREE(char *) shortName = NULL; + VIR_AUTOFREE(char *) base = NULL; if (!(shortName = virDomainDefGetShortName(def)) || qemuGetMemoryBackingBasePath(cfg, &base) < 0 || virAsprintf(path, "%s/%s", base, shortName) < 0) - goto cleanup; + return -1; - ret = 0; - cleanup: - VIR_FREE(base); - VIR_FREE(shortName); - return ret; + return 0; } @@ -2054,22 +2008,18 @@ qemuGetMemoryBackingPath(const virDomainDef *def, const char *alias, char **memPath) { - char *domainPath = NULL; - int ret = -1; + VIR_AUTOFREE(char *) domainPath = NULL; if (!alias) { /* This should never happen (TM) */ virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("memory device alias is not assigned")); - goto cleanup; + return -1; } if (qemuGetMemoryBackingDomainPath(def, cfg, &domainPath) < 0 || virAsprintf(memPath, "%s/%s", domainPath, alias) < 0) - goto cleanup; + return -1; - ret = 0; - cleanup: - VIR_FREE(domainPath); - return ret; + return 0; } -- 2.21.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list