On Thu, Mar 19, 2015 at 18:40:36 -0400, John Ferlan wrote: > > > On 03/17/2015 10:20 AM, Peter Krempa wrote: > > Add code to hot-add memory devices to running qemu instances. > > --- > > > > Notes: > > Version 3: > > - added comment to clarify that @mem is always consumed by qemuDomainAttachMemory > > Version 2: > > - no change > > > > Version 2: > > - no change > > > > src/qemu/qemu_command.c | 4 +-- > > src/qemu/qemu_command.h | 15 ++++++++ > > src/qemu/qemu_driver.c | 5 ++- > > src/qemu/qemu_hotplug.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++++ > > src/qemu/qemu_hotplug.h | 3 ++ > > 5 files changed, 119 insertions(+), 3 deletions(-) > > > > @@ -1672,6 +1672,101 @@ qemuDomainAttachRNGDevice(virQEMUDriverPtr driver, ... > > } > > > > > > +/** > > + * qemuDomainAttachMemory: > > + * @driver: qemu driver data > > + * @vm: VM object > > + * @mem: Definition of the memory device to be attached. @mem is always consumed > > + * > > + * Attaches memory device described by @mem to domain @vm. > > + * > > + * Returns 0 on success -1 on error. > > + */ > > +int > > +qemuDomainAttachMemory(virQEMUDriverPtr driver, > > + virDomainObjPtr vm, > > + virDomainMemoryDefPtr mem) > > +{ > > + qemuDomainObjPrivatePtr priv = vm->privateData; > > + virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); > > + char *devstr = NULL; > > + char *objalias = NULL; > > + const char *backendType; > > + virJSONValuePtr props = NULL; > > + int id; > > + int ret = -1; > > + > > + if (virAsprintf(&mem->info.alias, "dimm%zu", vm->def->nmems) < 0) > > + goto cleanup; > > + > > + if (virAsprintf(&objalias, "mem%s", mem->info.alias) < 0) > > + goto cleanup; > > + > > + if (!(devstr = qemuBuildMemoryDeviceStr(mem, priv->qemuCaps))) > > + goto cleanup; > > + > > + qemuDomainMemoryDeviceAlignSize(mem); > > + > > + if (qemuBuildMemoryBackendStr(mem->size, mem->pagesize, > > + mem->targetNode, mem->sourceNodes, NULL, > > + vm->def, priv->qemuCaps, cfg, > > + &backendType, &props, true) < 0) > > Coverity determines that qemuBuildMemoryBackendStr can return props here > with a -1 return and thus leak props > > That's because qemuBuildMemoryBackendStr sets the returned *backendProps > and sets the local props to NULL before the (!hugepages) code which if > it fails won't cause 'props' to be free'd properly > > Adding the virJSONValueFree(props); makes Coverity happy again. I'll fix qemuBuildMemoryBackendStr separately rather than adding a pseudo-hack that would violate the style we are using for functions that return via argument. Peter
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list