[libvirt] [PATCH 09/19] qemu_command: use VIR_AUTOFREE for variables used once

Michal Privoznik mprivozn at redhat.com
Wed Aug 21 07:44:05 UTC 2019


On 8/20/19 2:59 PM, Ján Tomko wrote:
> Remove the VIR_FREE's from the cleanup sections.
> 
> Signed-off-by: Ján Tomko <jtomko at redhat.com>
> ---
>   src/qemu/qemu_command.c | 207 +++++++++++++---------------------------
>   1 file changed, 66 insertions(+), 141 deletions(-)
> 
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index b5448a074f..fe06867a88 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c

Missing: qemuBuildControllersByTypeCommandLine, 
qemuBuildSoundCommandLine, qemuBuildRNGCommandLine, 
qemuBuildSmbiosCommandLine

Maybe you are doing that (and other suggestions I have for this patch) 
in next patches. If so, disregard me.

> @@ -203,8 +203,8 @@ qemuBuildMasterKeyCommandLine(virCommandPtr cmd,
>                                 qemuDomainObjPrivatePtr priv)
>   {
>       int ret = -1;
> -    char *alias = NULL;
> -    char *path = NULL;
> +    VIR_AUTOFREE(char *) alias = NULL;
> +    VIR_AUTOFREE(char *) path = NULL;
>       VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
>   
>       /* If the -object secret does not exist, then just return. This just
> @@ -235,8 +235,6 @@ qemuBuildMasterKeyCommandLine(virCommandPtr cmd,
>       ret = 0;
>   
>    cleanup:
> -    VIR_FREE(alias);
> -    VIR_FREE(path);
>       return ret;
>   }
>   
> @@ -301,7 +299,7 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
>                             virQEMUCapsPtr qemuCaps)
>   {
>       int ret = -1;
> -    char *devStr = NULL;
> +    VIR_AUTOFREE(char *) devStr = NULL;
>       const char *contAlias = NULL;
>       bool contIsPHB = false;
>       int contTargetIndex = 0;
> @@ -401,7 +399,6 @@ qemuBuildDeviceAddressStr(virBufferPtr buf,
>   
>       ret = 0;
>    cleanup:
> -    VIR_FREE(devStr);
>       return ret;
>   }
>   
> @@ -703,7 +700,7 @@ qemuBuildSecretInfoProps(qemuDomainSecretInfoPtr secinfo,
>                            virJSONValuePtr *propsret)
>   {
>       int ret = -1;
> -    char *keyid = NULL;
> +    VIR_AUTOFREE(char *) keyid = NULL;
>   
>       if (!(keyid = qemuDomainGetMasterKeyAlias()))
>           return -1;
> @@ -715,7 +712,6 @@ qemuBuildSecretInfoProps(qemuDomainSecretInfoPtr secinfo,
>                                          "s:iv", secinfo->s.aes.iv,
>                                          "s:format", "base64", NULL);
>   
> -    VIR_FREE(keyid);
>       return ret;
>   }
>   
> @@ -1518,13 +1514,12 @@ qemuCheckFips(void)
>       bool ret = false;
>   
>       if (virFileExists("/proc/sys/crypto/fips_enabled")) {
> -        char *buf = NULL;
> +        VIR_AUTOFREE(char *) buf = NULL;
>   
>           if (virFileReadAll("/proc/sys/crypto/fips_enabled", 10, &buf) < 0)
>               return ret;
>           if (STREQ(buf, "1\n"))
>               ret = true;
> -        VIR_FREE(buf);
>       }
>   
>       return ret;
> @@ -1612,7 +1607,7 @@ static int
>   qemuBuildDriveSourcePR(virBufferPtr buf,
>                          virDomainDiskDefPtr disk)
>   {
> -    char *alias = NULL;
> +    VIR_AUTOFREE(char *) alias = NULL;
>       const char *defaultAlias = NULL;
>   
>       if (!disk->src->pr)
> @@ -1625,7 +1620,6 @@ qemuBuildDriveSourcePR(virBufferPtr buf,
>   
>   
>       virBufferAsprintf(buf, ",file.pr-manager=%s", alias ? alias : defaultAlias);
> -    VIR_FREE(alias);
>       return 0;
>   }
>   
> @@ -1640,7 +1634,7 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk,
>       qemuDomainSecretInfoPtr secinfo = NULL;
>       qemuDomainSecretInfoPtr encinfo = NULL;
>       VIR_AUTOPTR(virJSONValue) srcprops = NULL;
> -    char *source = NULL;
> +    VIR_AUTOFREE(char *) source = NULL;
>       bool rawluks = false;
>       int ret = -1;
>   
> @@ -1726,7 +1720,6 @@ qemuBuildDriveSourceStr(virDomainDiskDefPtr disk,
>       ret = 0;
>   
>    cleanup:
> -    VIR_FREE(source);
>       return ret;
>   }
>   
> @@ -1839,13 +1832,12 @@ qemuBuildDriveStr(virDomainDiskDefPtr disk,
>           goto error;
>   
>       if (!qemuDiskBusNeedsDriveArg(disk->bus)) {
> -        char *drivealias = qemuAliasDiskDriveFromDisk(disk);
> +        VIR_AUTOFREE(char *) drivealias = qemuAliasDiskDriveFromDisk(disk);
>           if (!drivealias)
>               goto error;
>   
>           virBufferAddLit(&opt, "if=none");
>           virBufferAsprintf(&opt, ",id=%s", drivealias);
> -        VIR_FREE(drivealias);
>       } else {
>           int idx = virDiskNameToIndex(disk->dst);
>   
> @@ -2000,7 +1992,7 @@ qemuBuildDiskDeviceStr(const virDomainDef *def,
>       VIR_AUTOCLEAN(virBuffer) opt = VIR_BUFFER_INITIALIZER;
>       const char *bus = virDomainDiskQEMUBusTypeToString(disk->bus);
>       const char *contAlias;
> -    char *backendAlias = NULL;
> +    VIR_AUTOFREE(char *) backendAlias = NULL;
>       VIR_AUTOFREE(char *) scsiVPDDeviceId = NULL;
>       int controllerModel;
>   
> @@ -2334,7 +2326,6 @@ qemuBuildDiskDeviceStr(const virDomainDef *def,
>       return virBufferContentAndReset(&opt);
>   
>    error:
> -    VIR_FREE(backendAlias);
>       return NULL;
>   }

There is one more VIR_FREE(backendAlias) cca in the middle of the function.

>   
> @@ -2360,7 +2351,7 @@ static int
>   qemuCommandAddZPCIDevice(virCommandPtr cmd,
>                            virDomainDeviceInfoPtr dev)
>   {
> -    char *devstr = NULL;
> +    VIR_AUTOFREE(char *) devstr = NULL;
>   
>       virCommandAddArg(cmd, "-device");
>   
> @@ -2369,7 +2360,6 @@ qemuCommandAddZPCIDevice(virCommandPtr cmd,
>   
>       virCommandAddArg(cmd, devstr);
>   
> -    VIR_FREE(devstr);
>       return 0;
>   }
>   
> @@ -2399,9 +2389,9 @@ qemuBuildFloppyCommandLineControllerOptions(virCommandPtr cmd,
>       bool hasfloppy = false;
>       unsigned int bootindex;
>       char driveLetter;
> -    char *backendAlias = NULL;
> -    char *backendStr = NULL;
> -    char *bootindexStr = NULL;
> +    VIR_AUTOFREE(char *) backendAlias = NULL;
> +    VIR_AUTOFREE(char *) backendStr = NULL;
> +    VIR_AUTOFREE(char *) bootindexStr = NULL;

These variables are not used outside of the for() loop. If you move them 
there, you can drop also VIR_FREE() calls over each one of them at the 
end of the loop.

>       size_t i;
>       int ret = -1;
>   
> @@ -2471,9 +2461,6 @@ qemuBuildFloppyCommandLineControllerOptions(virCommandPtr cmd,
>       ret = 0;
>   
>    cleanup:
> -    VIR_FREE(backendAlias);
> -    VIR_FREE(backendStr);
> -    VIR_FREE(bootindexStr);
>       return ret;
>   }
>   
> @@ -2582,7 +2569,7 @@ qemuBuildDiskCommandLine(virCommandPtr cmd,
>                            virQEMUCapsPtr qemuCaps,
>                            unsigned int bootindex)
>   {
> -    char *optstr;
> +    VIR_AUTOFREE(char *) optstr = NULL;
>   
>       if (qemuBuildDiskSourceCommandLine(cmd, disk, qemuCaps) < 0)
>           return -1;
> @@ -2599,7 +2586,6 @@ qemuBuildDiskCommandLine(virCommandPtr cmd,
>                                                     qemuCaps)))
>                   return -1;
>               virCommandAddArg(cmd, optstr);
> -            VIR_FREE(optstr);
>           }
>       }
>   
> @@ -3400,7 +3386,7 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
>       const long system_page_size = virGetSystemPageSizeKB();
>       virDomainMemoryAccess memAccess = mem->access;
>       size_t i;
> -    char *memPath = NULL;
> +    VIR_AUTOFREE(char *) memPath = NULL;
>       bool prealloc = false;
>       virBitmapPtr nodemask = NULL;
>       int ret = -1;
> @@ -3648,7 +3634,6 @@ qemuBuildMemoryBackendProps(virJSONValuePtr *backendProps,
>           ret = -1;
>   
>    cleanup:
> -    VIR_FREE(memPath);
>       return ret;
>   }
>   
> @@ -3661,7 +3646,7 @@ qemuBuildMemoryCellBackendStr(virDomainDefPtr def,
>                                 virBufferPtr buf)
>   {
>       VIR_AUTOPTR(virJSONValue) props = NULL;
> -    char *alias = NULL;
> +    VIR_AUTOFREE(char *) alias = NULL;
>       int ret = -1;
>       int rc;
>       virDomainMemoryDef mem = { 0 };
> @@ -3685,7 +3670,6 @@ qemuBuildMemoryCellBackendStr(virDomainDefPtr def,
>       ret = rc;
>   
>    cleanup:
> -    VIR_FREE(alias);
>   
>       return ret;
>   }
> @@ -3699,7 +3683,7 @@ qemuBuildMemoryDimmBackendStr(virBufferPtr buf,
>                                 qemuDomainObjPrivatePtr priv)
>   {
>       VIR_AUTOPTR(virJSONValue) props = NULL;
> -    char *alias = NULL;
> +    VIR_AUTOFREE(char *) alias = NULL;
>       int ret = -1;
>   
>       if (!mem->info.alias) {
> @@ -3721,7 +3705,6 @@ qemuBuildMemoryDimmBackendStr(virBufferPtr buf,
>       ret = 0;
>   
>    cleanup:
> -    VIR_FREE(alias);
>   
>       return ret;
>   }
> @@ -3995,7 +3978,6 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
>       virDomainNetType netType = virDomainNetGetActualType(net);
>       virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
>       size_t i;
> -    char *addr = NULL;
>       char *ret = NULL;
>   
>       if (net->script && netType != VIR_DOMAIN_NET_TYPE_ETHERNET) {
> @@ -4062,6 +4044,7 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
>           virBufferAddLit(&buf, "user,");
>           for (i = 0; i < net->guestIP.nips; i++) {
>               const virNetDevIPAddr *ip = net->guestIP.ips[i];
> +            VIR_AUTOFREE(char *) addr = NULL;
>               const char *prefix = "";
>   
>               if (!(addr = virSocketAddrFormat(&ip->address)))
> @@ -4076,7 +4059,6 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
>               if (ip->prefix)
>                   virBufferAsprintf(&buf, "/%u", ip->prefix);
>               virBufferAddChar(&buf, ',');
> -            VIR_FREE(addr);
>           }
>           break;
>   
> @@ -4127,7 +4109,6 @@ qemuBuildHostNetStr(virDomainNetDefPtr net,
>       ret = virBufferContentAndReset(&buf);
>    cleanup:
>       virObjectUnref(cfg);
> -    VIR_FREE(addr);
>       return ret;
>   }
>   
> @@ -4166,7 +4147,7 @@ qemuBuildWatchdogCommandLine(virCommandPtr cmd,
>                                virQEMUCapsPtr qemuCaps)
>   {
>       virDomainWatchdogDefPtr watchdog = def->watchdog;
> -    char *optstr;
> +    VIR_AUTOFREE(char *) optstr = NULL;
>       const char *action;
>       int actualAction;
>   
> @@ -4183,7 +4164,6 @@ qemuBuildWatchdogCommandLine(virCommandPtr cmd,
>           return -1;
>   
>       virCommandAddArg(cmd, optstr);
> -    VIR_FREE(optstr);
>   
>       /* qemu doesn't have a 'dump' action; we tell qemu to 'pause', then
>          libvirt listens for the watchdog event, and we perform the dump
> @@ -4285,13 +4265,12 @@ qemuBuildNVRAMCommandLine(virCommandPtr cmd,
>               return -1;
>           }
>   
> -        char *optstr;
> +        VIR_AUTOFREE(char *) optstr = NULL;
>           virCommandAddArg(cmd, "-global");
>           optstr = qemuBuildNVRAMDevStr(def->nvram);
>           if (!optstr)
>               return -1;
>           virCommandAddArg(cmd, optstr);
> -        VIR_FREE(optstr);
>       } else {
>           virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>                         _("nvram device is only supported for PPC64"));
> @@ -4430,7 +4409,7 @@ qemuBuildInputCommandLine(virCommandPtr cmd,
>   
>       for (i = 0; i < def->ninputs; i++) {
>           virDomainInputDefPtr input = def->inputs[i];
> -        char *devstr = NULL;
> +        VIR_AUTOFREE(char *) devstr = NULL;
>   
>           if (qemuCommandAddExtDevice(cmd, &input->info) < 0)
>               return -1;
> @@ -4442,8 +4421,6 @@ qemuBuildInputCommandLine(virCommandPtr cmd,
>               virCommandAddArg(cmd, "-device");
>               virCommandAddArg(cmd, devstr);
>           }
> -
> -        VIR_FREE(devstr);
>       }
>   
>       return 0;
> @@ -4566,7 +4543,7 @@ qemuBuildSoundCommandLine(virCommandPtr cmd,
>   
>       for (i = 0; i < def->nsounds; i++) {
>           virDomainSoundDefPtr sound = def->sounds[i];
> -        char *str = NULL;
> +        VIR_AUTOFREE(char *) str = NULL;
>   
>           /* Sadly pcspk device doesn't use -device syntax. Fortunately
>            * we don't need to set any PCI address on it, so we don't
> @@ -4582,7 +4559,6 @@ qemuBuildSoundCommandLine(virCommandPtr cmd,
>                   return -1;
>   
>               virCommandAddArg(cmd, str);
> -            VIR_FREE(str);
>               if (sound->model == VIR_DOMAIN_SOUND_MODEL_ICH6 ||
>                   sound->model == VIR_DOMAIN_SOUND_MODEL_ICH9) {
>                   char *codecstr = NULL;
> @@ -4808,7 +4784,7 @@ qemuBuildVideoCommandLine(virCommandPtr cmd,
>       size_t i;
>   
>       for (i = 0; i < def->nvideos; i++) {
> -        char *str = NULL;
> +        VIR_AUTOFREE(char *) str = NULL;
>           virDomainVideoDefPtr video = def->videos[i];
>   
>           if (video->type == VIR_DOMAIN_VIDEO_TYPE_NONE)
> @@ -4827,7 +4803,6 @@ qemuBuildVideoCommandLine(virCommandPtr cmd,
>                       return -1;
>   
>                   virCommandAddArg(cmd, str);
> -                VIR_FREE(str);
>               } else {
>                   if (qemuBuildVgaVideoCommand(cmd, video, qemuCaps) < 0)
>                       return -1;
> @@ -4842,7 +4817,6 @@ qemuBuildVideoCommandLine(virCommandPtr cmd,
>                   return -1;
>   
>               virCommandAddArg(cmd, str);
> -            VIR_FREE(str);
>           }
>       }
>   
> @@ -4854,7 +4828,7 @@ int
>   qemuOpenPCIConfig(virDomainHostdevDefPtr dev)
>   {
>       virDomainHostdevSubsysPCIPtr pcisrc = &dev->source.subsys.u.pci;
> -    char *path = NULL;
> +    VIR_AUTOFREE(char *) path = NULL;
>       int configfd = -1;
>   
>       if (virAsprintf(&path, "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/config",
> @@ -4867,8 +4841,6 @@ qemuOpenPCIConfig(virDomainHostdevDefPtr dev)
>       if (configfd < 0)
>           virReportSystemError(errno, _("Failed opening %s"), path);
>   
> -    VIR_FREE(path);
> -
>       return configfd;
>   }
>   
> @@ -5011,13 +4983,12 @@ qemuBuildHubCommandLine(virCommandPtr cmd,
>   
>       for (i = 0; i < def->nhubs; i++) {
>           virDomainHubDefPtr hub = def->hubs[i];
> -        char *optstr;
> +        VIR_AUTOFREE(char *) optstr = NULL;
>   
>           virCommandAddArg(cmd, "-device");
>           if (!(optstr = qemuBuildHubDevStr(def, hub, qemuCaps)))
>               return -1;
>           virCommandAddArg(cmd, optstr);
> -        VIR_FREE(optstr);
>       }
>   
>       return 0;
> @@ -5043,7 +5014,7 @@ qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev,
>   {
>       char *ret = NULL;
>       VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
> -    char *netsource = NULL;
> +    VIR_AUTOFREE(char *) netsource = NULL;
>       VIR_AUTOPTR(virJSONValue) srcprops = NULL;
>       virDomainHostdevSubsysSCSIPtr scsisrc = &dev->source.subsys.u.scsi;
>       virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi;
> @@ -5072,7 +5043,6 @@ qemuBuildSCSIiSCSIHostdevDrvStr(virDomainHostdevDefPtr dev,
>       ret = virBufferContentAndReset(&buf);
>   
>    cleanup:
> -    VIR_FREE(netsource);
>       return ret;
>   }
>   
> @@ -5118,8 +5088,8 @@ qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev,
>                              virQEMUCapsPtr qemuCaps)
>   {
>       VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
> -    char *source = NULL;
> -    char *drivealias = NULL;
> +    VIR_AUTOFREE(char *) source = NULL;
> +    VIR_AUTOFREE(char *) drivealias = NULL;
>       virDomainHostdevSubsysSCSIPtr scsisrc = &dev->source.subsys.u.scsi;
>   
>       if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) {
> @@ -5131,12 +5101,10 @@ qemuBuildSCSIHostdevDrvStr(virDomainHostdevDefPtr dev,
>               goto error;
>           virBufferAsprintf(&buf, "file=/dev/%s,if=none,format=raw", source);
>       }
> -    VIR_FREE(source);
>   
>       if (!(drivealias = qemuAliasFromHostdev(dev)))
>           goto error;
>       virBufferAsprintf(&buf, ",id=%s", drivealias);
> -    VIR_FREE(drivealias);
>   
>       if (dev->readonly)
>           virBufferAddLit(&buf, ",readonly=on");
> @@ -5155,7 +5123,7 @@ qemuBuildSCSIHostdevDevStr(const virDomainDef *def,
>   {
>       VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
>       int model = -1;
> -    char *driveAlias;
> +    VIR_AUTOFREE(char *) driveAlias = NULL;
>       const char *contAlias;
>   
>       model = qemuDomainFindSCSIControllerModel(def, dev->info);
> @@ -5200,7 +5168,6 @@ qemuBuildSCSIHostdevDevStr(const virDomainDef *def,
>       if (!(driveAlias = qemuAliasFromHostdev(dev)))
>           goto error;
>       virBufferAsprintf(&buf, ",drive=%s,id=%s", driveAlias, dev->info->alias);
> -    VIR_FREE(driveAlias);
>   
>       if (dev->info->bootIndex)
>           virBufferAsprintf(&buf, ",bootindex=%u", dev->info->bootIndex);
> @@ -5222,7 +5189,8 @@ qemuBuildChrChardevFileStr(virLogManagerPtr logManager,
>                              const char *appendarg, int appendval)
>   {
>       if (logManager) {
> -        char *fdset, *fdpath;
> +        VIR_AUTOFREE(char *) fdset = NULL;
> +        VIR_AUTOFREE(char *) fdpath = NULL;
>           int flags = 0;
>           int logfd;
>   
> @@ -5245,13 +5213,11 @@ qemuBuildChrChardevFileStr(virLogManagerPtr logManager,
>   
>           virCommandAddArg(cmd, "-add-fd");
>           virCommandAddArg(cmd, fdset);
> -        VIR_FREE(fdset);
>   
>           if (!(fdpath = qemuVirCommandGetDevSet(cmd, logfd)))
>               return -1;
>   
>           virBufferAsprintf(buf, ",%s=%s,%s=on", filearg, fdpath, appendarg);
> -        VIR_FREE(fdpath);
>       } else {
>           virBufferAsprintf(buf, ",%s=", filearg);
>           virQEMUBuildBufferEscapeComma(buf, fileval);
> @@ -5356,7 +5322,7 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
>       qemuDomainChrSourcePrivatePtr chrSourcePriv = QEMU_DOMAIN_CHR_SOURCE_PRIVATE(dev);
>       VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
>       bool telnet;
> -    char *charAlias = NULL;
> +    VIR_AUTOFREE(char *) charAlias = NULL;
>       char *ret = NULL;
>   
>       if (!(charAlias = qemuAliasChardevFromDevAlias(alias)))
> @@ -5447,7 +5413,7 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
>           qemuBuildChrChardevReconnectStr(&buf, &dev->data.tcp.reconnect);
>   
>           if (dev->data.tcp.haveTLS == VIR_TRISTATE_BOOL_YES) {
> -            char *objalias = NULL;
> +            VIR_AUTOFREE(char *) objalias = NULL;
>               const char *tlsCertEncSecAlias = NULL;
>   
>               /* Add the secret object first if necessary. The
> @@ -5470,12 +5436,10 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
>                                               cfg->chardevTLSx509verify,
>                                               tlsCertEncSecAlias,
>                                               objalias, qemuCaps) < 0) {
> -                VIR_FREE(objalias);
>                   goto cleanup;
>               }
>   
>               virBufferAsprintf(&buf, ",tls-creds=%s", objalias);
> -            VIR_FREE(objalias);
>           }
>           break;
>   
> @@ -5544,7 +5508,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager,
>   
>       ret = virBufferContentAndReset(&buf);
>    cleanup:
> -    VIR_FREE(charAlias);
>       return ret;
>   }
>   
> @@ -5556,7 +5519,7 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def,
>       VIR_AUTOCLEAN(virBuffer) buf = VIR_BUFFER_INITIALIZER;
>       virDomainHostdevSubsysMediatedDevPtr mdevsrc = &dev->source.subsys.u.mdev;
>       char *ret = NULL;
> -    char *mdevPath = NULL;
> +    VIR_AUTOFREE(char *) mdevPath = NULL;
>       const char *dev_str = NULL;
>   
>       if (!(mdevPath = virMediatedDeviceGetSysfsPath(mdevsrc->uuidstr)))
> @@ -5583,7 +5546,6 @@ qemuBuildHostdevMediatedDevStr(const virDomainDef *def,
>       ret = virBufferContentAndReset(&buf);
>   
>    cleanup:
> -    VIR_FREE(mdevPath);
>       return ret;
>   }
>   
> @@ -5598,7 +5560,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>       for (i = 0; i < def->nhostdevs; i++) {
>           virDomainHostdevDefPtr hostdev = def->hostdevs[i];
>           virDomainHostdevSubsysPtr subsys = &hostdev->source.subsys;
> -        char *devstr;
> +        VIR_AUTOFREE(char *) devstr = NULL;
>   
>           if (hostdev->info->bootIndex) {
>               if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
> @@ -5621,7 +5583,6 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>                     qemuBuildUSBHostdevDevStr(def, hostdev, qemuCaps)))
>                   return -1;
>               virCommandAddArg(cmd, devstr);
> -            VIR_FREE(devstr);
>           }
>   
>           /* PCI */
> @@ -5638,7 +5599,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>                   }
>               }
>   
> -            char *configfd_name = NULL;
> +            VIR_AUTOFREE(char *) configfd_name = NULL;
>               unsigned int bootIndex = hostdev->info->bootIndex;
>   
>               /* bootNet will be non-0 if boot order was set and no other
> @@ -5668,18 +5629,16 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>               virCommandAddArg(cmd, "-device");
>               devstr = qemuBuildPCIHostdevDevStr(def, hostdev, bootIndex,
>                                                  configfd_name, qemuCaps);
> -            VIR_FREE(configfd_name);
>               if (!devstr)
>                   return -1;
>               virCommandAddArg(cmd, devstr);
> -            VIR_FREE(devstr);
>           }
>   
>           /* SCSI */
>           if (virHostdevIsSCSIDevice(hostdev)) {
>               virDomainHostdevSubsysSCSIPtr scsisrc =
>                   &hostdev->source.subsys.u.scsi;
> -            char *drvstr;
> +            VIR_AUTOFREE(char *) drvstr = NULL;
>   
>               if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) {
>                   virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc =
> @@ -5697,13 +5656,11 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>               if (!(drvstr = qemuBuildSCSIHostdevDrvStr(hostdev, qemuCaps)))
>                   return -1;
>               virCommandAddArg(cmd, drvstr);
> -            VIR_FREE(drvstr);
>   
>               virCommandAddArg(cmd, "-device");
>               if (!(devstr = qemuBuildSCSIHostdevDevStr(def, hostdev)))
>                   return -1;
>               virCommandAddArg(cmd, devstr);
> -            VIR_FREE(devstr);
>           }
>   
>           /* SCSI_host */
> @@ -5711,7 +5668,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>               subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST) {
>               if (hostdev->source.subsys.u.scsi_host.protocol ==
>                   VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_VHOST) {
> -                char *vhostfdName = NULL;
> +                VIR_AUTOFREE(char *) vhostfdName = NULL;
>                   int vhostfd = -1;
>   
>                   if (virSCSIVHostOpenVhostSCSI(&vhostfd) < 0)
> @@ -5729,14 +5686,10 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>                   if (!(devstr = qemuBuildSCSIVHostHostdevDevStr(def,
>                                                                  hostdev,
>                                                                  qemuCaps,
> -                                                               vhostfdName))) {
> -                    VIR_FREE(vhostfdName);
> +                                                               vhostfdName)))
>                       return -1;
> -                }
> -                virCommandAddArg(cmd, devstr);
>   
> -                VIR_FREE(vhostfdName);
> -                VIR_FREE(devstr);
> +                virCommandAddArg(cmd, devstr);
>               }
>           }
>   
> @@ -5782,7 +5735,6 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
>                     qemuBuildHostdevMediatedDevStr(def, hostdev, qemuCaps)))
>                   return -1;
>               virCommandAddArg(cmd, devstr);
> -            VIR_FREE(devstr);
>           }
>       }
>   
> @@ -5798,7 +5750,7 @@ qemuBuildMonitorCommandLine(virLogManagerPtr logManager,
>                               virDomainDefPtr def,
>                               qemuDomainObjPrivatePtr priv)
>   {
> -    char *chrdev;
> +    VIR_AUTOFREE(char *) chrdev = NULL;
>       unsigned int cdevflags = QEMU_BUILD_CHARDEV_TCP_NOWAIT |
>           QEMU_BUILD_CHARDEV_UNIX_FD_PASS;
>       if (priv->chardevStdioLogd)
> @@ -5814,7 +5766,6 @@ qemuBuildMonitorCommandLine(virLogManagerPtr logManager,
>           return -1;
>       virCommandAddArg(cmd, "-chardev");
>       virCommandAddArg(cmd, chrdev);
> -    VIR_FREE(chrdev);
>   
>       virCommandAddArg(cmd, "-mon");
>       virCommandAddArg(cmd, "chardev=charmonitor,id=monitor,mode=control");
> @@ -5963,8 +5914,8 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
>                            virQEMUCapsPtr qemuCaps,
>                            virJSONValuePtr *props)
>   {
> -    char *objAlias = NULL;
> -    char *charBackendAlias = NULL;
> +    VIR_AUTOFREE(char *) objAlias = NULL;
> +    VIR_AUTOFREE(char *) charBackendAlias = NULL;
>       int ret = -1;
>   
>       if (virAsprintf(&objAlias, "obj%s", rng->info.alias) < 0)
> @@ -6013,8 +5964,6 @@ qemuBuildRNGBackendProps(virDomainRNGDefPtr rng,
>       ret = 0;
>   
>    cleanup:
> -    VIR_FREE(objAlias);
> -    VIR_FREE(charBackendAlias);
>       return ret;
>   }
>   
> @@ -6585,13 +6534,12 @@ qemuBuildClockCommandLine(virCommandPtr cmd,
>                             virQEMUCapsPtr qemuCaps)
>   {
>       size_t i;
> -    char *rtcopt;
> +    VIR_AUTOFREE(char *) rtcopt = NULL;
>   
>       virCommandAddArg(cmd, "-rtc");
>       if (!(rtcopt = qemuBuildClockArgStr(&def->clock)))
>           return -1;
>       virCommandAddArg(cmd, rtcopt);
> -    VIR_FREE(rtcopt);
>   
>       if (def->clock.offset == VIR_DOMAIN_CLOCK_OFFSET_TIMEZONE &&
>           def->clock.data.timezone) {
> @@ -6747,7 +6695,7 @@ qemuBuildBootCommandLine(virCommandPtr cmd,
>                            virQEMUCapsPtr qemuCaps)
>   {
>       VIR_AUTOCLEAN(virBuffer) boot_buf = VIR_BUFFER_INITIALIZER;
> -    char *boot_opts_str = NULL;
> +    VIR_AUTOFREE(char *) boot_opts_str = NULL;
>   
>       if (def->os.bootmenu) {
>           if (def->os.bootmenu == VIR_TRISTATE_BOOL_YES)
> @@ -6814,7 +6762,6 @@ qemuBuildBootCommandLine(virCommandPtr cmd,
>       return 0;
>   
>    error:
> -    VIR_FREE(boot_opts_str);
>       return -1;
>   }
>   

Theres's another VIR_FREE(boot_opts_str);


Michal




More information about the libvir-list mailing list