[libvirt] [PATCH] conf: fix leak in virDomainVcpuPinAdd

John Ferlan jferlan at redhat.com
Wed Jan 16 17:35:45 UTC 2013


On 01/15/2013 09:48 AM, Ján Tomko wrote:
> Fix the leak of vcpupin on failure to allocate cpumask and the leak of
> cpumask if we fail to expand vcpupin_list.
> ---
>  src/conf/domain_conf.c |   25 ++++++++++++-------------
>  1 files changed, 12 insertions(+), 13 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 6feded4..95ecd9d 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -11908,26 +11908,25 @@ int virDomainVcpuPinAdd(virDomainVcpuPinDefPtr **vcpupin_list,
>  
>      /* No existing vcpupin matches vcpu, adding a new one */
>  
> -    if (VIR_ALLOC(vcpupin) < 0) {
> -        virReportOOMError();
> -        return -1;
> -    }
> +    if (VIR_ALLOC(vcpupin) < 0)
> +        goto no_memory;
> +
>      vcpupin->vcpuid = vcpu;
>      vcpupin->cpumask = virBitmapNewData(cpumap, maplen);
> -    if (!vcpupin->cpumask) {
> -        virReportOOMError();
> -        return -1;
> -    }
> +    if (!vcpupin->cpumask)
> +        goto no_memory;
>  
> -    if (VIR_REALLOC_N(*vcpupin_list, *nvcpupin + 1) < 0) {
> -        virReportOOMError();
> -        VIR_FREE(vcpupin);
> -        return -1;
> -    }
> +    if (VIR_REALLOC_N(*vcpupin_list, *nvcpupin + 1) < 0)
> +        goto no_memory;
>  
>      (*vcpupin_list)[(*nvcpupin)++] = vcpupin;
>  
>      return 0;
> +
> +no_memory:
> +    virReportOOMError();
> +    virDomainVcpuPinDefFree(vpcupin);

s/vpcupin/vcpupin

> +    return -1;
>  }
>  
>  int
> 




More information about the libvir-list mailing list