[libvirt] [PATCH v5 16/36] qemu_process: Cleanup qemuProcessQmp alloc function

Jiri Denemark jdenemar at redhat.com
Thu Jan 3 14:49:28 UTC 2019


On Sun, Dec 02, 2018 at 23:10:10 -0600, Chris Venteicher wrote:
> qemuProcessQmpNew is one of the 4 public functions used to create and
> manage a qemu process for QMP command exchanges outside of domain
> operations.
> 
> Add descriptive comment block, Debug statement and make source
> consistent with the cleanup / VIR_STEAL_PTR format used elsewhere.
> 
> Signed-off-by: Chris Venteicher <cventeic at redhat.com>
> ---
>  src/qemu/qemu_process.c | 32 ++++++++++++++++++++++++++------
>  1 file changed, 26 insertions(+), 6 deletions(-)
> 
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index 31d41688fe..faf86dac5d 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -8124,6 +8124,18 @@ qemuProcessQmpFree(qemuProcessQmpPtr proc)
>  }
>  
>  
> +/**
> + * qemuProcessQmpNew:
> + * @binary: Qemu binary
> + * @libDir: Directory for process and connection artifacts
> + * @runUid: UserId for Qemu Process
> + * @runGid: GroupId for Qemu Process
> + * @forceTCG: Force TCG mode if true

s/Qemu/QEMU/

> + *
> + * Allocate and initialize domain structure encapsulating
> + * QEMU Process state and monitor connection to QEMU
> + * for completing QMP Queries.
> + */
>  qemuProcessQmpPtr
>  qemuProcessQmpNew(const char *binary,
>                    const char *libDir,
> @@ -8131,25 +8143,33 @@ qemuProcessQmpNew(const char *binary,
>                    gid_t runGid,
>                    bool forceTCG)
>  {
> +    qemuProcessQmpPtr ret = NULL;
>      qemuProcessQmpPtr proc = NULL;
>  
> +    VIR_DEBUG("exec=%s, libDir=%s, runUid=%u, runGid=%u, forceTCG=%d",
> +              NULLSTR(binary), NULLSTR(libDir), runUid, runGid, forceTCG);

The code is not designed to work with binary or libDir being NULL. Thus
we don't need to guard them here with NULLSTR() macro.

> +
>      if (VIR_ALLOC(proc) < 0)
> -        goto error;
> +        goto cleanup;
>  
>      if (VIR_STRDUP(proc->binary, binary) < 0 ||
>          VIR_STRDUP(proc->libDir, libDir) < 0)
> -        goto error;
> +        goto cleanup;
>  
>  
>      proc->runUid = runUid;
>      proc->runGid = runGid;
>      proc->forceTCG = forceTCG;
>  
> -    return proc;
> +    VIR_STEAL_PTR(ret, proc);
>  
> - error:
> -    qemuProcessQmpFree(proc);
> -    return NULL;
> + cleanup:
> +    if (proc)
> +        qemuProcessQmpFree(proc);

Just

       qemuProcessQmpFree(proc);

all *Free functions are designed to handle NULL pointers.

> +
> +    VIR_DEBUG("ret=%p", ret);
> +
> +    return ret;

This is the appropriate usage of VIR_STEAL_PTR() macro.

With the obvious s/Qmp/QMP/

Reviewed-by: Jiri Denemark <jdenemar at redhat.com>




More information about the libvir-list mailing list