[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