mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-13 07:01:26 +00:00
conf: fix leak in virDomainVcpuPinAdd
Fix the leak of vcpupin on failure to allocate cpumask and the leak of cpumask if we fail to expand vcpupin_list.
This commit is contained in:
parent
a69d7a00c4
commit
65aa3e3414
@ -11900,26 +11900,25 @@ int virDomainVcpuPinAdd(virDomainVcpuPinDefPtr **vcpupin_list,
|
|||||||
|
|
||||||
/* No existing vcpupin matches vcpu, adding a new one */
|
/* No existing vcpupin matches vcpu, adding a new one */
|
||||||
|
|
||||||
if (VIR_ALLOC(vcpupin) < 0) {
|
if (VIR_ALLOC(vcpupin) < 0)
|
||||||
virReportOOMError();
|
goto no_memory;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
vcpupin->vcpuid = vcpu;
|
vcpupin->vcpuid = vcpu;
|
||||||
vcpupin->cpumask = virBitmapNewData(cpumap, maplen);
|
vcpupin->cpumask = virBitmapNewData(cpumap, maplen);
|
||||||
if (!vcpupin->cpumask) {
|
if (!vcpupin->cpumask)
|
||||||
virReportOOMError();
|
goto no_memory;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_REALLOC_N(*vcpupin_list, *nvcpupin + 1) < 0) {
|
if (VIR_REALLOC_N(*vcpupin_list, *nvcpupin + 1) < 0)
|
||||||
virReportOOMError();
|
goto no_memory;
|
||||||
VIR_FREE(vcpupin);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
(*vcpupin_list)[(*nvcpupin)++] = vcpupin;
|
(*vcpupin_list)[(*nvcpupin)++] = vcpupin;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
no_memory:
|
||||||
|
virReportOOMError();
|
||||||
|
virDomainVcpuPinDefFree(vpcupin);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
Loading…
x
Reference in New Issue
Block a user