[PATCH v2] qemu: fix memory leak about virDomainEventTunableNew

Jiri Denemark jdenemar at redhat.com
Fri Sep 23 10:20:14 UTC 2022


On Fri, Sep 23, 2022 at 10:23:38 +0800, luzhipeng wrote:
> From: lu zhipeng <luzhipeng at cestc.cn>
> 
> For prevent memory leak and easier to use, So change
> virDomainEventTunableNew to get virTypedParameterPtr *params
> and set it = NULL.
> 
> Signed-off-by: lu zhipeng <luzhipeng at cestc.cn>
> ---
> v1: https://patchew.org/Libvirt/20220922130038.1616-1-luzhipeng@cestc.cn/
> 
>  src/conf/domain_event.c    | 12 ++++++------
>  src/conf/domain_event.h    |  4 ++--
>  src/qemu/qemu_driver.c     | 22 ++++++++++------------
>  src/remote/remote_driver.c |  2 +-
>  4 files changed, 19 insertions(+), 21 deletions(-)

Hmm, looks good, but I'm wondering what happened to your patch...

> diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
> index ff8ea2c389..97d58c2521 100644
> --- a/src/conf/domain_event.c
> +++ b/src/conf/domain_event.c
> @@ -1495,7 +1495,7 @@ static virObjectEvent *
>  virDomainEventTunableNew(int id,
>                           const char *name,
>                           unsigned char *uuid,
> -                         virTypedParameterPtr params,
> +                         virTypedParameterPtr *params,
>                           int nparams)
>  {
>      virDomainEventTunable *ev;
> @@ -1508,19 +1508,19 @@ virDomainEventTunableNew(int id,
>                                   id, name, uuid)))
>          goto error;
>  
> -    ev->params = params;
> +    ev->params = *params;
>      ev->nparams = nparams;
> -
> +    *params = NULL;
>      return (virObjectEvent *)ev;
>  
>   error:
> -    virTypedParamsFree(params, nparams);
> +    virTypedParamsFree(*params, nparams);
>      return NULL;
>  }
>  
>  virObjectEvent *
>  virDomainEventTunableNewFromObj(virDomainObj *obj,
> -                                virTypedParameterPtr params,
> +                                virTypedParameterPtr *params,
> 				 A

^^ "A" above

>                                  int nparams)
>  {
>      return virDomainEventTunableNew(obj->def->id,
> @@ -1532,7 +1532,7 @@ virDomainEventTunableNewFromObj(virDomainObj *obj,
>  
>  virObjectEvent *
>  virDomainEventTunableNewFromDom(virDomainPtr dom,
> -                                virTypedParameterPtr params,
> +                                virTypedParameterPtr *params,
>                                  int nparams)
>  {
>      return virDomainEventTunableNew(dom->id,
...
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 94b70872d4..3db4592945 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4472,12 +4472,12 @@ qemuDomainPinVcpuLive(virDomainObj *vm,
>                                  &eventMaxparams, paramField, str) < 0)
>          goto cleanup;
>  
> -    event = virDomainEventTunableNewFromObj(vm, eventParams, eventNparams);
> A

again

> -
> +    event = virDomainEventTunableNewFromObj(vm, &eventParams, eventNparams);
>      ret = 0;
>  
>   cleanup:
>      virObjectEventStateQueue(driver->domainEventState, event);
> +    virTypedParamsFree(eventParams, eventNparams);
>      return ret;
>  }
>  
> @@ -4681,7 +4681,7 @@ qemuDomainPinEmulator(virDomainPtr dom,
>                                      str) < 0)
>              goto endjob;
>  
> -        event = virDomainEventTunableNewFromDom(dom, eventParams, eventNparams);
> +        event = virDomainEventTunableNewFromDom(dom, &eventParams, eventNparams);
>      }
>  
>      if (persistentDef) {
> B
> A

and even more of it here

...

Jirka


More information about the libvir-list mailing list