diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 16c2e1d770b6cc28e46c5b40b7148e2e3eb6b95d..5d9a59fa3a0e313cb357613715ac96fe289085c9 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -936,7 +936,7 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED, diskAlias, vm, vm->def->name, type, status); if (!(disk = qemuProcessFindDomainDiskByAliasOrQOM(vm, diskAlias, NULL))) - goto error; + goto cleanup; job = QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob; @@ -950,11 +950,11 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED, } else { /* there is no waiting SYNC API, dispatch the update to a thread */ if (VIR_ALLOC(processEvent) < 0) - goto error; + goto cleanup; processEvent->eventType = QEMU_PROCESS_EVENT_BLOCK_JOB; if (VIR_STRDUP(data, diskAlias) < 0) - goto error; + goto cleanup; processEvent->data = data; processEvent->vm = virObjectRef(vm); processEvent->action = type; @@ -962,16 +962,16 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon ATTRIBUTE_UNUSED, if (virThreadPoolSendJob(driver->workerPool, 0, processEvent) < 0) { ignore_value(virObjectUnref(vm)); - goto error; + goto cleanup; } + + processEvent = NULL; } cleanup: + qemuProcessEventFree(processEvent); virObjectUnlock(vm); return 0; - error: - qemuProcessEventFree(processEvent); - goto cleanup; }