[libvirt] [PATCH 6/6] qemu: Resolve Coverity RESOURCE_LEAK
Ján Tomko
jtomko at redhat.com
Thu Sep 24 07:45:01 UTC 2015
On Wed, Sep 23, 2015 at 07:18:33PM -0400, John Ferlan wrote:
> This seemed to be more of a false positive as for some reason Coverity
> was missing the "ret < 0" goto error condition and somehow believing that
> event could be overwritten. At first I thought it was just the ret != 0
> condition difference, but it wasn't.
>
Then those changes are cosmetic and don't need to be in a commit fixing
the RESOURCE_LEAK.
> In any case, make use of the recent change to qemuDomainEventQueue to
> check event == NULL and just pass it as a parameter directly in the
> error path. That avoids the error.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> src/qemu/qemu_driver.c | 24 +++++++++++-------------
> 1 file changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 2387cf3..3a98774 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -3155,7 +3155,7 @@ qemuDomainSaveMemory(virQEMUDriverPtr driver,
> virFileWrapperFdFree(wrapperFd);
> VIR_FREE(xml);
>
> - if (ret != 0 && needUnlink)
> + if (ret < 0 && needUnlink)
> unlink(path);
>
> return ret;
> @@ -3174,7 +3174,6 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom,
> char *xml = NULL;
> bool was_running = false;
> int ret = -1;
> - int rc;
> virObjectEventPtr event = NULL;
> qemuDomainObjPrivatePtr priv = vm->privateData;
> virCapsPtr caps;
> @@ -3249,21 +3248,20 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom,
> /* Shut it down */
> qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_SAVED, 0);
> virDomainAuditStop(vm, "saved");
> - event = virDomainEventLifecycleNewFromObj(vm,
> - VIR_DOMAIN_EVENT_STOPPED,
> - VIR_DOMAIN_EVENT_STOPPED_SAVED);
> + event = virDomainEventLifecycleNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
> + VIR_DOMAIN_EVENT_STOPPED_SAVED);
> endjob:
> - if (ret != 0) {
> + if (ret < 0) {
> if (was_running && virDomainObjIsActive(vm)) {
> virErrorPtr save_err = virSaveLastError();
> - rc = qemuProcessStartCPUs(driver, vm, dom->conn,
> - VIR_DOMAIN_RUNNING_SAVE_CANCELED,
> - QEMU_ASYNC_JOB_SAVE);
> - if (rc < 0) {
> + if (qemuProcessStartCPUs(driver, vm, dom->conn,
> + VIR_DOMAIN_RUNNING_SAVE_CANCELED,
> + QEMU_ASYNC_JOB_SAVE) < 0) {
> VIR_WARN("Unable to resume guest CPUs after save failure");
> - event = virDomainEventLifecycleNewFromObj(vm,
> - VIR_DOMAIN_EVENT_SUSPENDED,
> - VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
> + qemuDomainEventQueue(driver,
> + virDomainEventLifecycleNewFromObj(vm,
> + VIR_DOMAIN_EVENT_SUSPENDED,
> + VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR));
ACK to this hunk as the coverity fix, and the rest pushed separately.
Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150924/bbf48346/attachment-0001.sig>
More information about the libvir-list
mailing list