[libvirt] [PATCH v2 2/3] conf, docs: Add support for coalesce setting(s)

John Ferlan jferlan at redhat.com
Sat Apr 22 11:30:05 UTC 2017



On 04/20/2017 08:21 AM, Martin Kletzander wrote:
> We are currently parsing only rx_max_coalesced_frames because that's
> the only value that makes sense for us.  The tun device just added
> support for this one and the others are only supported by hardware
> devices which we don't need to worry about as the only way we'd pass
> those to the domain is using <hostdev/> or <interface type='hostdev'/>.
> And in those cases the guest can modify the settings itself.
> 
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>  docs/formatdomain.html.in                          |  24 ++++
>  docs/schemas/domaincommon.rng                      | 131 +++++++++++++++++++++
>  src/conf/domain_conf.c                             |  80 +++++++++++++
>  src/conf/domain_conf.h                             |   2 +
>  src/qemu/qemu_domain.c                             |  31 +++++
>  .../qemuxml2argvdata/qemuxml2argv-net-coalesce.xml |  68 +++++++++++
>  .../qemuxml2xmlout-net-coalesce.xml                |  71 +++++++++++
>  tests/qemuxml2xmltest.c                            |   1 +
>  8 files changed, 408 insertions(+)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-coalesce.xml
>  create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-coalesce.xml
> 

Coverity found a resource leak...

> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 705deb39a1bf..cbeebdc56880 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -6772,6 +6772,77 @@ virDomainNetIPInfoParseXML(const char *source,
>      return ret;
>  }
> 
> +
> +static virNetDevCoalescePtr
> +virDomainNetDefCoalesceParseXML(xmlNodePtr node,
> +                                xmlXPathContextPtr ctxt)
> +{
> +    virNetDevCoalescePtr ret = NULL;
> +    xmlNodePtr save = NULL;
> +    char *str = NULL;
> +    unsigned long long tmp = 0;
> +
> +    save = ctxt->node;
> +    ctxt->node = node;
> +
> +    str = virXPathString("string(./rx/frames/@max)", ctxt);
> +    if (!str)
> +        goto cleanup;
> +
> +    if (!ret && VIR_ALLOC(ret) < 0)
> +        goto cleanup;

Right here - str isn't free'd in cleanup (or error), but could be...

> +
> +    if (virStrToLong_ullp(str, NULL, 10, &tmp) < 0) {
> +        virReportError(VIR_ERR_XML_DETAIL,
> +                       _("cannot parse value '%s' for coalesce parameter"),
> +                       str);
> +        VIR_FREE(str);
> +        goto error;
> +    }
> +    VIR_FREE(str);
> +
> +    if (tmp > UINT32_MAX) {
> +        virReportError(VIR_ERR_OVERFLOW,
> +                       _("value '%llu' is too big for coalesce "
> +                         "parameter, maximum is '%lu'"),
> +                       tmp, (unsigned long) UINT32_MAX);
> +        goto error;
> +    }
> +    ret->rx_max_coalesced_frames = tmp;
> +
> + cleanup:
> +    ctxt->node = save;
> +    return ret;
> +
> + error:
> +    VIR_FREE(ret);
> +    goto cleanup;
> +}
> +
...




More information about the libvir-list mailing list