[libvirt PATCH 03/10] util: vircgroup: change virCgroupFree to take only virCgroupPtr

Jonathon Jongsma jjongsma at redhat.com
Thu Oct 8 16:36:56 UTC 2020


On Thu,  8 Oct 2020 16:26:56 +0200
Pavel Hrdina <phrdina at redhat.com> wrote:

> As preparation for g_autoptr() we need to change the function to take
> only virCgroupPtr.
> 
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
>  src/libvirt-lxc.c                 |  4 +-
>  src/lxc/lxc_cgroup.c              |  4 +-
>  src/lxc/lxc_container.c           |  2 +-
>  src/lxc/lxc_controller.c          |  2 +-
>  src/lxc/lxc_domain.c              |  2 +-
>  src/lxc/lxc_process.c             | 11 +++---
>  src/qemu/qemu_cgroup.c            | 12 +++---
>  src/qemu/qemu_domain.c            |  3 +-
>  src/qemu/qemu_driver.c            | 32 +++++++--------
>  src/qemu/qemu_process.c           |  2 +-
>  src/util/vircgroup.c              | 65
> +++++++++++++++++-------------- src/util/vircgroup.h              |
> 2 +- src/util/vircgroupv1.c            |  2 +-
>  tests/vircgrouptest.c             | 48 +++++++++++------------
>  tools/virt-host-validate-common.c |  2 +-
>  15 files changed, 102 insertions(+), 91 deletions(-)
> 
> diff --git a/src/libvirt-lxc.c b/src/libvirt-lxc.c
> index 25f1cfc5f7..73daf123f0 100644
> --- a/src/libvirt-lxc.c
> +++ b/src/libvirt-lxc.c
> @@ -307,12 +307,12 @@ int virDomainLxcEnterCGroup(virDomainPtr domain,
>      if (virCgroupAddProcess(cgroup, getpid()) < 0)
>          goto error;
>  
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>  
>      return 0;
>  
>   error:
>      virDispatchError(NULL);
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return -1;
>  }
> diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
> index d13f2adde5..b80a8911f9 100644
> --- a/src/lxc/lxc_cgroup.c
> +++ b/src/lxc/lxc_cgroup.c
> @@ -168,7 +168,7 @@ int virLXCCgroupGetMeminfo(virLXCMeminfoPtr
> meminfo) 
>      ret = 0;
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -417,7 +417,7 @@ virCgroupPtr virLXCCgroupCreate(virDomainDefPtr
> def, def->idmap.uidmap[0].target,
>                                def->idmap.gidmap[0].target,
>                                (1 << VIR_CGROUP_CONTROLLER_SYSTEMD))
> < 0) {
> -            virCgroupFree(&cgroup);
> +            virCgroupFree(cgroup);
>              return NULL;
>          }
>      }
> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> index d1aa622be4..913f4de26a 100644
> --- a/src/lxc/lxc_container.c
> +++ b/src/lxc/lxc_container.c
> @@ -1668,7 +1668,7 @@ static int
> lxcContainerSetupPivotRoot(virDomainDefPtr vmDef, ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
> index f70731bc64..e6dee85ec7 100644
> --- a/src/lxc/lxc_controller.c
> +++ b/src/lxc/lxc_controller.c
> @@ -310,7 +310,7 @@ static void
> virLXCControllerFree(virLXCControllerPtr ctrl) g_free(ctrl->nbdpids);
>  
>      g_free(ctrl->nsFDs);
> -    virCgroupFree(&ctrl->cgroup);
> +    virCgroupFree(ctrl->cgroup);
>  
>      /* This must always be the last thing to be closed */
>      VIR_FORCE_CLOSE(ctrl->handshakeFd);
> diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c
> index d8aebe06d9..df60519fca 100644
> --- a/src/lxc/lxc_domain.c
> +++ b/src/lxc/lxc_domain.c
> @@ -168,7 +168,7 @@ virLXCDomainObjPrivateFree(void *data)
>  {
>      virLXCDomainObjPrivatePtr priv = data;
>  
> -    virCgroupFree(&priv->cgroup);
> +    virCgroupFree(priv->cgroup);
>      virLXCDomainObjFreeJob(priv);
>      g_free(priv);
>  }
> diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
> index 16969dbf33..a98a090893 100644
> --- a/src/lxc/lxc_process.c
> +++ b/src/lxc/lxc_process.c
> @@ -236,7 +236,8 @@ static void virLXCProcessCleanup(virLXCDriverPtr
> driver, 
>      if (priv->cgroup) {
>          virCgroupRemove(priv->cgroup);
> -        virCgroupFree(&priv->cgroup);
> +        virCgroupFree(priv->cgroup);
> +        priv->cgroup = NULL;
>      }
>  
>      /* Get machined to terminate the machine as it may not have
> cleaned it @@ -1202,26 +1203,26 @@ int
> virLXCProcessStart(virConnectPtr conn, 
>      if (!virCgroupHasController(selfcgroup,
>                                  VIR_CGROUP_CONTROLLER_CPUACCT)) {
> -        virCgroupFree(&selfcgroup);
> +        virCgroupFree(selfcgroup);
>          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                         _("Unable to find 'cpuacct' cgroups
> controller mount")); return -1;
>      }
>      if (!virCgroupHasController(selfcgroup,
>                                  VIR_CGROUP_CONTROLLER_DEVICES)) {
> -        virCgroupFree(&selfcgroup);
> +        virCgroupFree(selfcgroup);
>          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                         _("Unable to find 'devices' cgroups
> controller mount")); return -1;
>      }
>      if (!virCgroupHasController(selfcgroup,
>                                  VIR_CGROUP_CONTROLLER_MEMORY)) {
> -        virCgroupFree(&selfcgroup);
> +        virCgroupFree(selfcgroup);
>          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>                         _("Unable to find 'memory' cgroups controller
> mount")); return -1;
>      }
> -    virCgroupFree(&selfcgroup);
> +    virCgroupFree(selfcgroup);
>  
>      if (vm->def->nconsoles == 0) {
>          virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
> index 9017753053..473ca8a414 100644
> --- a/src/qemu/qemu_cgroup.c
> +++ b/src/qemu/qemu_cgroup.c
> @@ -921,7 +921,8 @@ qemuInitCgroup(virDomainObjPtr vm,
>      if (!virCgroupAvailable())
>          return 0;
>  
> -    virCgroupFree(&priv->cgroup);
> +    virCgroupFree(priv->cgroup);
> +    priv->cgroup = NULL;
>  
>      if (!vm->def->resource) {
>          virDomainResourceDefPtr res;
> @@ -983,7 +984,7 @@ qemuRestoreCgroupThread(virCgroupPtr cgroup,
>  
>      ret = 0;
>   cleanup:
> -    virCgroupFree(&cgroup_temp);
> +    virCgroupFree(cgroup_temp);
>      return ret;
>  }
>  
> @@ -1054,7 +1055,8 @@ qemuConnectCgroup(virDomainObjPtr vm)
>      if (!virCgroupAvailable())
>          return 0;
>  
> -    virCgroupFree(&priv->cgroup);
> +    virCgroupFree(priv->cgroup);
> +    priv->cgroup = NULL;
>  
>      if (virCgroupNewDetectMachine(vm->def->name,
>                                    "qemu",
> @@ -1150,7 +1152,7 @@ qemuSetupCgroupForExtDevices(virDomainObjPtr vm,
>      ret = qemuExtDevicesSetupCgroup(driver, vm, cgroup_temp);
>  
>   cleanup:
> -    virCgroupFree(&cgroup_temp);
> +    virCgroupFree(cgroup_temp);
>  
>      return ret;
>  }
> @@ -1221,7 +1223,7 @@
> qemuCgroupEmulatorAllNodesDataFree(qemuCgroupEmulatorAllNodesDataPtr
> data) if (!data) return;
>  
> -    virCgroupFree(&data->emulatorCgroup);
> +    virCgroupFree(data->emulatorCgroup);
>      VIR_FREE(data->emulatorMemMask);
>      VIR_FREE(data);
>  }
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 9623123d3c..2d7f61f5e9 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -1725,7 +1725,8 @@
> qemuDomainObjPrivateDataClear(qemuDomainObjPrivatePtr priv)
> g_strfreev(priv->qemuDevices); priv->qemuDevices = NULL;
>  
> -    virCgroupFree(&priv->cgroup);
> +    virCgroupFree(priv->cgroup);
> +    priv->cgroup = NULL;
>  
>      virPerfFree(priv->perf);
>      priv->perf = NULL;
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 8ef812cd94..60e043115f 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4583,7 +4583,7 @@ qemuDomainPinVcpuLive(virDomainObjPtr vm,
>  
>   cleanup:
>      virBitmapFree(tmpmap);
> -    virCgroupFree(&cgroup_vcpu);
> +    virCgroupFree(cgroup_vcpu);
>      virObjectEventStateQueue(driver->domainEventState, event);
>      return ret;
>  }
> @@ -4809,7 +4809,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
>  
>   cleanup:
>      if (cgroup_emulator)
> -        virCgroupFree(&cgroup_emulator);
> +        virCgroupFree(cgroup_emulator);
>      virObjectEventStateQueue(driver->domainEventState, event);
>      virBitmapFree(pcpumap);
>      virDomainObjEndAPI(&vm);
> @@ -5287,7 +5287,7 @@ qemuDomainPinIOThread(virDomainPtr dom,
>  
>   cleanup:
>      if (cgroup_iothread)
> -        virCgroupFree(&cgroup_iothread);
> +        virCgroupFree(cgroup_iothread);
>      virObjectEventStateQueue(driver->domainEventState, event);
>      virBitmapFree(pcpumap);
>      virDomainObjEndAPI(&vm);
> @@ -8717,7 +8717,7 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm,
>                             false, &cgroup_temp) < 0 ||
>          virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
>          goto cleanup;
> -    virCgroupFree(&cgroup_temp);
> +    virCgroupFree(cgroup_temp);
>  
>      for (i = 0; i < virDomainDefGetVcpusMax(vm->def); i++) {
>          virDomainVcpuDefPtr vcpu = virDomainDefGetVcpu(vm->def, i);
> @@ -8729,7 +8729,7 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm,
>                                 false, &cgroup_temp) < 0 ||
>              virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
>              goto cleanup;
> -        virCgroupFree(&cgroup_temp);
> +        virCgroupFree(cgroup_temp);
>      }
>  
>      for (i = 0; i < vm->def->niothreadids; i++) {
> @@ -8738,7 +8738,7 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm,
>                                 false, &cgroup_temp) < 0 ||
>              virCgroupSetCpusetMems(cgroup_temp, nodeset_str) < 0)
>              goto cleanup;
> -        virCgroupFree(&cgroup_temp);
> +        virCgroupFree(cgroup_temp);
>      }
>  
>      /* set nodeset for root cgroup */
> @@ -8747,7 +8747,7 @@ qemuDomainSetNumaParamsLive(virDomainObjPtr vm,
>  
>      ret = 0;
>   cleanup:
> -    virCgroupFree(&cgroup_temp);
> +    virCgroupFree(cgroup_temp);

I realize that this particular issue only exists until you switch to
using autoptr in patch 7, but you're technically introducing a bug
here. virCgroupFree() no longer clears the ptr to NULL, so when you
free cgroup_temp up above within this function, it is now a dangling
pointer, and then we try to free it again in the cleanup section.
Previously this cleanup call to virCgroupFree() was a no-op for all
non-error paths. 

There are several other examples within this patch.

>  
>      return ret;
>  }
> @@ -9164,13 +9164,13 @@ qemuSetVcpusBWLive(virDomainObjPtr vm,
> virCgroupPtr cgroup, if (qemuSetupCgroupVcpuBW(cgroup_vcpu, period,
> quota) < 0) goto cleanup;
>  
> -        virCgroupFree(&cgroup_vcpu);
> +        virCgroupFree(cgroup_vcpu);
>      }
>  
>      return 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup_vcpu);
> +    virCgroupFree(cgroup_vcpu);
>      return -1;
>  }
>  
> @@ -9191,11 +9191,11 @@ qemuSetEmulatorBandwidthLive(virCgroupPtr
> cgroup, if (qemuSetupCgroupVcpuBW(cgroup_emulator, period, quota) < 0)
>          goto cleanup;
>  
> -    virCgroupFree(&cgroup_emulator);
> +    virCgroupFree(cgroup_emulator);
>      return 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup_emulator);
> +    virCgroupFree(cgroup_emulator);
>      return -1;
>  }
>  
> @@ -9222,13 +9222,13 @@ qemuSetIOThreadsBWLive(virDomainObjPtr vm,
> virCgroupPtr cgroup, if (qemuSetupCgroupVcpuBW(cgroup_iothread,
> period, quota) < 0) goto cleanup;
>  
> -        virCgroupFree(&cgroup_iothread);
> +        virCgroupFree(cgroup_iothread);
>      }
>  
>      return 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup_iothread);
> +    virCgroupFree(cgroup_iothread);
>      return -1;
>  }
>  
> @@ -9601,7 +9601,7 @@ qemuGetVcpusBWLive(virDomainObjPtr vm,
>      ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup_vcpu);
> +    virCgroupFree(cgroup_vcpu);
>      return ret;
>  }
>  
> @@ -9624,7 +9624,7 @@ qemuGetEmulatorBandwidthLive(virCgroupPtr
> cgroup, ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup_emulator);
> +    virCgroupFree(cgroup_emulator);
>      return ret;
>  }
>  
> @@ -9660,7 +9660,7 @@ qemuGetIOThreadsBWLive(virDomainObjPtr vm,
>      ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup_iothread);
> +    virCgroupFree(cgroup_iothread);
>      return ret;
>  }
>  
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index 6b5de29fdb..5bc76a75e3 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -2750,7 +2750,7 @@ qemuProcessSetupPid(virDomainObjPtr vm,
>      if (cgroup) {
>          if (ret < 0)
>              virCgroupRemove(cgroup);
> -        virCgroupFree(&cgroup);
> +        virCgroupFree(cgroup);
>      }
>  
>      return ret;
> diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
> index d52c0305f4..04876c6596 100644
> --- a/src/util/vircgroup.c
> +++ b/src/util/vircgroup.c
> @@ -680,7 +680,7 @@ virCgroupNew(pid_t pid,
>      return 0;
>  
>   error:
> -    virCgroupFree(group);
> +    virCgroupFree(*group);
>      *group = NULL;
>  
>      return -1;
> @@ -860,9 +860,11 @@ virCgroupNewPartition(const char *path,
>  
>      ret = 0;
>   cleanup:
> -    if (ret != 0)
> -        virCgroupFree(group);
> -    virCgroupFree(&parent);
> +    if (ret != 0) {
> +        virCgroupFree(*group);
> +        *group = NULL;
> +    }
> +    virCgroupFree(parent);
>      return ret;
>  }
>  
> @@ -923,7 +925,8 @@ virCgroupNewDomainPartition(virCgroupPtr
> partition, */
>      if (virCgroupMakeGroup(partition, *group, create,
>                             VIR_CGROUP_MEM_HIERACHY) < 0) {
> -        virCgroupFree(group);
> +        virCgroupFree(*group);
> +        *group = NULL;
>          return -1;
>      }
>  
> @@ -976,7 +979,8 @@ virCgroupNewThread(virCgroupPtr domain,
>          return -1;
>  
>      if (virCgroupMakeGroup(domain, *group, create,
> VIR_CGROUP_THREAD) < 0) {
> -        virCgroupFree(group);
> +        virCgroupFree(*group);
> +        *group = NULL;
>          return -1;
>      }
>  
> @@ -1019,7 +1023,8 @@ virCgroupNewDetectMachine(const char *name,
>                                                           machinename))
> { VIR_DEBUG("Failed to validate machine name for '%s' driver '%s'",
>                        name, drivername);
> -            virCgroupFree(group);
> +            virCgroupFree(*group);
> +            *group = NULL;
>              return 0;
>          }
>      }
> @@ -1059,13 +1064,13 @@ virCgroupEnableMissingControllers(char *path,
>              goto cleanup;
>  
>          if (virCgroupMakeGroup(parent, tmp, true,
> VIR_CGROUP_SYSTEMD) < 0) {
> -            virCgroupFree(&tmp);
> +            virCgroupFree(tmp);
>              goto cleanup;
>          }
>          if (t) {
>              *t = '/';
>              offset = t;
> -            virCgroupFree(&parent);
> +            virCgroupFree(parent);
>              parent = tmp;
>          } else {
>              *group = tmp;
> @@ -1075,7 +1080,7 @@ virCgroupEnableMissingControllers(char *path,
>  
>      ret = 0;
>   cleanup:
> -    virCgroupFree(&parent);
> +    virCgroupFree(parent);
>      return ret;
>  }
>  
> @@ -1130,7 +1135,7 @@ virCgroupNewMachineSystemd(const char *name,
>              break;
>          }
>      }
> -    virCgroupFree(&init);
> +    virCgroupFree(init);
>  
>      if (!path || STREQ(path, "/") || path[0] != '/') {
>          VIR_DEBUG("Systemd didn't setup its controller, path=%s",
> @@ -1148,7 +1153,8 @@ virCgroupNewMachineSystemd(const char *name,
>  
>          virErrorPreserveLast(&saved);
>          virCgroupRemove(*group);
> -        virCgroupFree(group);
> +        virCgroupFree(*group);
> +        *group = NULL;
>          virErrorRestore(&saved);
>      }
>  
> @@ -1199,7 +1205,8 @@ virCgroupNewMachineManual(const char *name,
>  
>          virErrorPreserveLast(&saved);
>          virCgroupRemove(*group);
> -        virCgroupFree(group);
> +        virCgroupFree(*group);
> +        *group = NULL;
>          virErrorRestore(&saved);
>      }
>  
> @@ -1207,7 +1214,7 @@ virCgroupNewMachineManual(const char *name,
>      ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&parent);
> +    virCgroupFree(parent);
>      return ret;
>  }
>  
> @@ -2059,12 +2066,12 @@ virCgroupGetPercpuVcpuSum(virCgroupPtr group,
>              sum_cpu_time[j] += tmp;
>          }
>  
> -        virCgroupFree(&group_vcpu);
> +        virCgroupFree(group_vcpu);
>      }
>  
>      ret = 0;
>   cleanup:
> -    virCgroupFree(&group_vcpu);
> +    virCgroupFree(group_vcpu);
>      return ret;
>  }
>  
> @@ -2556,7 +2563,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr
> group, if (dormdir)
>              virCgroupRemove(subgroup);
>  
> -        virCgroupFree(&subgroup);
> +        virCgroupFree(subgroup);
>      }
>      if (direrr < 0)
>          goto cleanup;
> @@ -2565,7 +2572,7 @@ virCgroupKillRecursiveInternal(virCgroupPtr
> group, ret = killedAny ? 1 : 0;
>  
>   cleanup:
> -    virCgroupFree(&subgroup);
> +    virCgroupFree(subgroup);
>      VIR_DIR_CLOSE(dp);
>      return ret;
>  }
> @@ -2767,7 +2774,7 @@ virCgroupControllerAvailable(int controller)
>          return ret;
>  
>      ret = virCgroupHasController(cgroup, controller);
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -3534,24 +3541,24 @@ virCgroupControllerAvailable(int controller
> G_GNUC_UNUSED)
>   * @group: The group structure to free
>   */
>  void
> -virCgroupFree(virCgroupPtr *group)
> +virCgroupFree(virCgroupPtr group)
>  {
>      size_t i;
>  
> -    if (*group == NULL)
> +    if (group == NULL)
>          return;
>  
>      for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++) {
> -        VIR_FREE((*group)->legacy[i].mountPoint);
> -        VIR_FREE((*group)->legacy[i].linkPoint);
> -        VIR_FREE((*group)->legacy[i].placement);
> +        VIR_FREE(group->legacy[i].mountPoint);
> +        VIR_FREE(group->legacy[i].linkPoint);
> +        VIR_FREE(group->legacy[i].placement);
>      }
>  
> -    VIR_FREE((*group)->unified.mountPoint);
> -    VIR_FREE((*group)->unified.placement);
> +    VIR_FREE(group->unified.mountPoint);
> +    VIR_FREE(group->unified.placement);
>  
> -    VIR_FREE((*group)->path);
> -    VIR_FREE(*group);
> +    VIR_FREE(group->path);
> +    VIR_FREE(group);
>  }
>  
>  
> @@ -3568,7 +3575,7 @@ virCgroupDelThread(virCgroupPtr cgroup,
>  
>          /* Remove the offlined cgroup */
>          virCgroupRemove(new_cgroup);
> -        virCgroupFree(&new_cgroup);
> +        virCgroupFree(new_cgroup);
>      }
>  
>      return 0;
> diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
> index 1dcd0688f1..691bec610f 100644
> --- a/src/util/vircgroup.h
> +++ b/src/util/vircgroup.h
> @@ -107,7 +107,7 @@ int virCgroupTerminateMachine(const char *name)
>  
>  bool virCgroupNewIgnoreError(void);
>  
> -void virCgroupFree(virCgroupPtr *group);
> +void virCgroupFree(virCgroupPtr group);
>  
>  bool virCgroupHasController(virCgroupPtr cgroup, int controller);
>  int virCgroupPathOfController(virCgroupPtr group,
> diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
> index 5504441fa6..52d2a17d39 100644
> --- a/src/util/vircgroupv1.c
> +++ b/src/util/vircgroupv1.c
> @@ -1484,7 +1484,7 @@ virCgroupV1MemoryOnceInit(void)
>                                        "memory.limit_in_bytes",
>                                        &mem_unlimited));
>   cleanup:
> -    virCgroupFree(&group);
> +    virCgroupFree(group);
>      virCgroupV1MemoryUnlimitedKB = mem_unlimited >> 10;
>  }
>  
> diff --git a/tests/vircgrouptest.c b/tests/vircgrouptest.c
> index e5be556104..632d33efcd 100644
> --- a/tests/vircgrouptest.c
> +++ b/tests/vircgrouptest.c
> @@ -217,7 +217,7 @@ testCgroupDetectMounts(const void *args)
>   cleanup:
>      g_unsetenv("VIR_CGROUP_MOCK_FILENAME");
>      VIR_FREE(parsed);
> -    virCgroupFree(&group);
> +    virCgroupFree(group);
>      return result;
>  }
>  
> @@ -245,7 +245,7 @@ static int testCgroupNewForSelf(const void *args
> G_GNUC_UNUSED) ret = validateCgroup(cgroup, "", mountsFull, links,
> placement, NULL, NULL, 0); 
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -322,7 +322,7 @@ static int testCgroupNewForPartition(const void
> *args G_GNUC_UNUSED) goto cleanup;
>      }
>      ret = validateCgroup(cgroup, "/virtualmachines.partition",
> mountsSmall, links, placementSmall, NULL, NULL, 0);
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>  
>      if ((rv = virCgroupNewPartition("/virtualmachines", true, -1,
> &cgroup)) != 0) { fprintf(stderr, "Cannot create /virtualmachines
> cgroup: %d\n", -rv); @@ -331,7 +331,7 @@ static int
> testCgroupNewForPartition(const void *args G_GNUC_UNUSED) ret =
> validateCgroup(cgroup, "/virtualmachines.partition", mountsFull,
> links, placementFull, NULL, NULL, 0); cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -371,7 +371,7 @@ static int testCgroupNewForPartitionNested(const
> void *args G_GNUC_UNUSED) }
>  
>      /* Should now work */
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      if ((rv = virCgroupNewPartition("/deployment/production", true,
> -1, &cgroup)) != 0) { fprintf(stderr, "Failed to create
> /deployment/production cgroup: %d\n", -rv); goto cleanup;
> @@ -381,7 +381,7 @@ static int testCgroupNewForPartitionNested(const
> void *args G_GNUC_UNUSED) mountsFull, links, placementFull, NULL,
> NULL, 0); 
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -420,14 +420,14 @@ static int
> testCgroupNewForPartitionNestedDeep(const void *args G_GNUC_UNUSED)
> goto cleanup; }
>  
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      if ((rv = virCgroupNewPartition("/user/berrange.user", true, -1,
> &cgroup)) != 0) { fprintf(stderr, "Failed to create
> /user/berrange.user cgroup: %d\n", -rv); goto cleanup;
>      }
>  
>      /* Should now work */
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      if ((rv =
> virCgroupNewPartition("/user/berrange.user/production", true, -1,
> &cgroup)) != 0) { fprintf(stderr, "Failed to create
> /user/berrange.user/production cgroup: %d\n", -rv); goto cleanup; @@
> -437,7 +437,7 @@ static int testCgroupNewForPartitionNestedDeep(const
> void *args G_GNUC_UNUSED) mountsFull, links, placementFull, NULL,
> NULL, 0); cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -473,8 +473,8 @@ static int testCgroupNewForPartitionDomain(const
> void *args G_GNUC_UNUSED) ret = validateCgroup(domaincgroup,
> "/production.partition/foo.libvirt-lxc", mountsFull, links,
> placement, NULL, NULL, 0); cleanup:
> -    virCgroupFree(&partitioncgroup);
> -    virCgroupFree(&domaincgroup);
> +    virCgroupFree(partitioncgroup);
> +    virCgroupFree(domaincgroup);
>      return ret;
>  }
>  
> @@ -524,10 +524,10 @@ static int
> testCgroupNewForPartitionDomainEscaped(const void *args G_GNUC_UNUSED
> ret = validateCgroup(domaincgroup,
> "/_cgroup.evil/net_cls.evil/__evil.evil/_cpu.foo.libvirt-lxc",
> mountsFull, links, placement, NULL, NULL, 0); cleanup:
> -    virCgroupFree(&partitioncgroup3);
> -    virCgroupFree(&partitioncgroup2);
> -    virCgroupFree(&partitioncgroup1);
> -    virCgroupFree(&domaincgroup);
> +    virCgroupFree(partitioncgroup3);
> +    virCgroupFree(partitioncgroup2);
> +    virCgroupFree(partitioncgroup1);
> +    virCgroupFree(domaincgroup);
>      return ret;
>  }
>  
> @@ -553,7 +553,7 @@ static int testCgroupNewForSelfAllInOne(const
> void *args G_GNUC_UNUSED) ret = validateCgroup(cgroup, "",
> mountsAllInOne, linksAllInOne, placement, NULL, NULL, 0); 
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -564,7 +564,7 @@ static int testCgroupNewForSelfLogind(const void
> *args G_GNUC_UNUSED) 
>      if (virCgroupNewSelf(&cgroup) >= 0) {
>          fprintf(stderr, "Expected to fail, only systemd cgroup
> available.\n");
> -        virCgroupFree(&cgroup);
> +        virCgroupFree(cgroup);
>          return -1;
>      }
>  
> @@ -592,7 +592,7 @@ static int testCgroupNewForSelfUnified(const void
> *args G_GNUC_UNUSED) ret = validateCgroup(cgroup, "", empty, empty,
> empty, "/not/really/sys/fs/cgroup", "/", controllers);
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -630,7 +630,7 @@ static int testCgroupNewForSelfHybrid(const void
> *args G_GNUC_UNUSED) "/not/really/sys/fs/cgroup/unified", "/",
> controllers); 
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -756,7 +756,7 @@ static int testCgroupGetPercpuStats(const void
> *args G_GNUC_UNUSED) ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      VIR_FREE(params);
>      return ret;
>  }
> @@ -789,7 +789,7 @@ static int testCgroupGetMemoryUsage(const void
> *args G_GNUC_UNUSED) ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -849,7 +849,7 @@ testCgroupGetMemoryStat(const void *args
> G_GNUC_UNUSED) ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -900,7 +900,7 @@ static int testCgroupGetBlkioIoServiced(const
> void *args G_GNUC_UNUSED) ret = 0;
>  
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> @@ -973,7 +973,7 @@ static int
> testCgroupGetBlkioIoDeviceServiced(const void *args G_GNUC_UNUSED)
> ret = 0; 
>   cleanup:
> -    virCgroupFree(&cgroup);
> +    virCgroupFree(cgroup);
>      return ret;
>  }
>  
> diff --git a/tools/virt-host-validate-common.c
> b/tools/virt-host-validate-common.c index c3784bb91d..4d8ec38f88
> 100644 --- a/tools/virt-host-validate-common.c
> +++ b/tools/virt-host-validate-common.c
> @@ -315,7 +315,7 @@ int virHostValidateCGroupControllers(const char
> *hvname, }
>      }
>  
> -    virCgroupFree(&group);
> +    virCgroupFree(group);
>  
>      return ret;
>  }




More information about the libvir-list mailing list