[libvirt] PATCH: Fix crash attempting to shutdown inactive QEMU vm

Daniel P. Berrange berrange at redhat.com
Fri Jul 31 14:52:55 UTC 2009


If the virDomainShutdown() op was run on an active QEMu vm,
it would crash, since the def->monitor_chr was NULL.


Daniel

commit 49ec121fd806aaa07bbcba9668a8f9dd43dda9c4
Author: Daniel P. Berrange <berrange at redhat.com>
Date:   Fri Jul 31 15:50:46 2009 +0100

    Fix crash when attempting to shutdown inactive QEMU vm
    
    * src/qemu_driver.c: Add check that QEMU is active before attemting
      to shutdown. Fix error code for check in destroy method

diff --git a/src/qemu_driver.c b/src/qemu_driver.c
index 26897d3..cebbafb 100644
--- a/src/qemu_driver.c
+++ b/src/qemu_driver.c
@@ -2940,6 +2940,12 @@ static int qemudDomainShutdown(virDomainPtr dom) {
         goto cleanup;
     }
 
+    if (!virDomainIsActive(vm)) {
+        qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_INVALID,
+                         "%s", _("domain is not running"));
+        goto cleanup;
+    }
+
     if (qemudMonitorCommand(vm, "system_powerdown", &info) < 0) {
         qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
                          "%s", _("shutdown operation failed"));
@@ -2971,7 +2977,7 @@ static int qemudDomainDestroy(virDomainPtr dom) {
         goto cleanup;
     }
     if (!virDomainIsActive(vm)) {
-        qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
+        qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_INVALID,
                          "%s", _("domain is not running"));
         goto cleanup;
     }


-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list