On 03/07/2014 02:46 AM, Michal Privoznik wrote:
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_command.c | 90 ++++++++++++++++++--------------------------
src/qemu/qemu_conf.c | 8 +---
src/qemu/qemu_conf.h | 2 +-
src/qemu/qemu_driver.c | 10 ++---
src/qemu/qemu_monitor_json.c | 2 +-
src/qemu/qemu_monitor_text.c | 3 +-
6 files changed, 46 insertions(+), 69 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 611d21d..648cf29 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -10981,15 +10981,16 @@ qemuParseCommandLineCPU(virDomainDefPtr dom,
}
if (j == dom->clock.ntimers) {
- if (VIR_REALLOC_N(dom->clock.timers, j + 1) < 0 ||
- VIR_ALLOC(dom->clock.timers[j]) < 0)
+ virDomainTimerDefPtr timer;
+ if (VIR_ALLOC(timer) < 0 ||
+ VIR_APPEND_ELEMENT_COPY(dom->clock.timers,
+ dom->clock.ntimers, timer) < 0)
goto cleanup;
Memory leak if timer is allocated but the append fails.
+++ b/src/qemu/qemu_driver.c
@@ -4044,17 +4044,17 @@ static int qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
*/
virDomainVcpuPinDefPtr vcpupin = NULL;
- if (VIR_REALLOC_N(vm->def->cputune.vcpupin,
- vm->def->cputune.nvcpupin + 1) < 0)
- goto cleanup;
-
if (VIR_ALLOC(vcpupin) < 0)
goto cleanup;
vcpupin->cpumask = virBitmapNew(VIR_DOMAIN_CPUMASK_LEN);
virBitmapCopy(vcpupin->cpumask, vm->def->cpumask);
vcpupin->vcpuid = i;
- vm->def->cputune.vcpupin[vm->def->cputune.nvcpupin++] =
vcpupin;
+ if (VIR_APPEND_ELEMENT_COPY(vm->def->cputune.vcpupin,
+ vm->def->cputune.nvcpupin, vcpupin)
< 0) {
+ virBitmapFree(vcpupin->cpumask);
+ VIR_FREE(vcpupin);
+ }
Missing a 'goto error;'.
ACK with those fixed.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org