From: Jiri Denemark Date: Wed, 29 Jun 2016 13:52:49 +0000 (+0200) Subject: qemu: Use proper async job to refresh virtio channels X-Git-Tag: CVE-2016-5008~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7371ca5c26a4da6f0a9f2afc5722a139603d6245;p=thirdparty%2Flibvirt.git qemu: Use proper async job to refresh virtio channels Signed-off-by: Jiri Denemark --- diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index c411dab612..6a683f7de4 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -6237,7 +6237,8 @@ qemuMigrationFinish(virQEMUDriverPtr driver, if (qemuMigrationStopNBDServer(driver, vm, mig) < 0) goto endjob; - if (qemuRefreshVirtioChannelState(driver, vm) < 0) + if (qemuRefreshVirtioChannelState(driver, vm, + QEMU_ASYNC_JOB_MIGRATION_IN) < 0) goto endjob; if ((rc = qemuConnectAgent(driver, vm)) < 0) { diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 63da60095d..c8ff587ff2 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1974,13 +1974,16 @@ qemuProcessRefreshChannelVirtioState(virQEMUDriverPtr driver, int qemuRefreshVirtioChannelState(virQEMUDriverPtr driver, - virDomainObjPtr vm) + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob) { qemuDomainObjPrivatePtr priv = vm->privateData; virHashTablePtr info = NULL; int ret = -1; - qemuDomainObjEnterMonitor(driver, vm); + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) + goto cleanup; + ret = qemuMonitorGetChardevInfo(priv->mon, &info); if (qemuDomainObjExitMonitor(driver, vm) < 0) ret = -1; @@ -3312,7 +3315,7 @@ qemuProcessReconnect(void *opaque) if (qemuProcessRefreshDisks(driver, obj, QEMU_ASYNC_JOB_NONE) < 0) goto error; - if (qemuRefreshVirtioChannelState(driver, obj) < 0) + if (qemuRefreshVirtioChannelState(driver, obj, QEMU_ASYNC_JOB_NONE) < 0) goto error; /* If querying of guest's RTC failed, report error, but do not kill the domain. */ diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h index 37081ad4c1..21f3b0ccaa 100644 --- a/src/qemu/qemu_process.h +++ b/src/qemu/qemu_process.h @@ -180,7 +180,8 @@ int qemuProcessSetupIOThread(virDomainObjPtr vm, virDomainIOThreadIDDefPtr iothread); int qemuRefreshVirtioChannelState(virQEMUDriverPtr driver, - virDomainObjPtr vm); + virDomainObjPtr vm, + qemuDomainAsyncJob asyncJob); int qemuProcessRefreshBalloonState(virQEMUDriverPtr driver, virDomainObjPtr vm,