[libvirt] [PATCH] qemu: fix potential dead lock

If we lock the qemu_driver, we should call qemuDomainObjBeginJobWithDriver() not qemuDomainObjBeginJob(). --- src/qemu/qemu_driver.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 39b27b1..3d62aab 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -8905,7 +8905,7 @@ qemuDomainMigrateBegin3(virDomainPtr domain, goto cleanup; asyncJob = QEMU_ASYNC_JOB_MIGRATION_OUT; } else { - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) + if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; asyncJob = QEMU_ASYNC_JOB_NONE; } -- 1.7.1

On 05/25/2012 12:12 PM, Wen Congyang wrote:
If we lock the qemu_driver, we should call qemuDomainObjBeginJobWithDriver() not qemuDomainObjBeginJob().
--- src/qemu/qemu_driver.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 39b27b1..3d62aab 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -8905,7 +8905,7 @@ qemuDomainMigrateBegin3(virDomainPtr domain, goto cleanup; asyncJob = QEMU_ASYNC_JOB_MIGRATION_OUT; } else { - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) + if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY) < 0) goto cleanup; asyncJob = QEMU_ASYNC_JOB_NONE; }
ACK, cite: "... qemud_driver must NOT be locked ..." for qemuDomainObjBeginJob() and "If qemud_driver is passed, it MUST be locked ..." for qemuDomainObjBeginJobWithDriver() and the driver is being locked about 15 lines before that. Martin

On 05/25/2012 10:14 PM, Martin Kletzander wrote:
On 05/25/2012 12:12 PM, Wen Congyang wrote:
If we lock the qemu_driver, we should call qemuDomainObjBeginJobWithDriver() not qemuDomainObjBeginJob().
--- src/qemu/qemu_driver.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 39b27b1..3d62aab 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -8905,7 +8905,7 @@ qemuDomainMigrateBegin3(virDomainPtr domain, goto cleanup; asyncJob = QEMU_ASYNC_JOB_MIGRATION_OUT; } else { - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY)< 0) + if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY)< 0) goto cleanup; asyncJob = QEMU_ASYNC_JOB_NONE; }
ACK, cite: "... qemud_driver must NOT be locked ..." for qemuDomainObjBeginJob() and "If qemud_driver is passed, it MUST be locked ..." for qemuDomainObjBeginJobWithDriver() and the driver is being locked about 15 lines before that.
Martin
Thanks, pushed Wen Congyang
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
participants (3)
-
Martin Kletzander
-
Wen Congyang
-
Wen Congyang