This is a typical example of what can go wrong when sending out
an old patch. Back in January, when I was writing
qemuProcessHandleMemoryDeviceSizeChange() events were sent to the
worker pool thread using virThreadPoolSendJob(). Then, in July a
helper was introduced (qemuProcessEventSubmit()) but since my
code was not committed and I did not pay attention my code wasn't
updated. Later, when I merged my code it uses the old approach.
BTW: this also fixes a possible double free which I completely
missed when writing the code ~10 months ago.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
processEvent->vm = virObjectRef(vm);
processEvent->data = g_steal_pointer(&info);
- if (virThreadPoolSendJob(driver->workerPool, 0, processEvent) < 0) {
- qemuProcessEventFree(processEvent);
- virObjectUnref(vm);
- goto cleanup;
- }
+ qemuProcessEventSubmit(driver, &processEvent);
- processEvent = NULL;
- cleanup:
- qemuProcessEventFree(processEvent);
virObjectUnlock(vm);
}