[libvirt] [PATCH] conf: replace call to virNetworkFree() with virOjectUnref()

Michal Privoznik mprivozn at redhat.com
Tue Nov 25 12:29:11 UTC 2014


On 25.11.2014 11:15, Laine Stump wrote:
> The function virNetworkObjListExport() in network_conf.c had a call to
> the public API virNetworkFree() which was causing a link error:
>
> CCLD     libvirt_driver_vbox_network_impl.la
>   ./.libs/libvirt_conf.a(libvirt_conf_la-network_conf.o): In function `virNetworkObjListExport':
> /home/laine/devel/libvirt/src/conf/network_conf.c:4496: undefined reference to `virNetworkFree'
>
> This would happen when I added
>
>    #include "network_conf.h"
>
> into domain_conf.c, then attempted to call a new function from that
> file (and enum converter, similar to virNetworkForwardTypeToString())
>
> In the end, virNetworkFree() ends up just calling virObjectUnref(obj)
> anyway (after clearing all pending errors, which we probably *don't*
> want to do in the cleanup of a utility function), so this is likely
> more correct than the original code as well.
> ---
>
> A quick look showed that there may be other places where we are
> calling public APIs such as virNetworkFree and virDomainFree when we
> really don't want to be clearning out the pending error - this would
> result in the good old "an error was encountered but the cause is
> unknown" type of log messages. It may warrant an audit...
>
>   src/conf/network_conf.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index 067334e..a249e32 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -4463,10 +4463,8 @@ virNetworkObjListExport(virConnectPtr conn,
>
>    cleanup:
>       if (tmp_nets) {
> -        for (i = 0; i < nnets; i++) {
> -            if (tmp_nets[i])
> -                virNetworkFree(tmp_nets[i]);
> -        }
> +        for (i = 0; i < nnets; i++)
> +            virObjectUnref(tmp_nets[i]);
>       }
>
>       VIR_FREE(tmp_nets);
>

ACK

Michal




More information about the libvir-list mailing list