
On 03/07/2014 02:46 AM, Michal Privoznik wrote:
Signed-off-by: Michal Privoznik <mprivozn@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