]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Init address before qemuProcessShutdownOrReboot during reconnect process
authorJiang Jiacheng <jiangjiacheng@huawei.com>
Wed, 28 Sep 2022 13:53:28 +0000 (21:53 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 12 Oct 2022 12:47:55 +0000 (14:47 +0200)
When libvirt is restarted, the qemuProcessShutdownReboot command is
executed to restore the VM that is being restarted. In this case, a
coredump may occur when we hotplug a pci device since the PCI address
hasn't be inited yet. Moving the initialization of address to the front
of qemuProcessShutdownOrReboot to ensure that we have the address inited.

Signed-off-by: Jiang Jiacheng <jiangjiacheng@huawei.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_process.c

index d78e91efed3c145a76c687b7ab3501b1a7300cfa..e6fd9395dea75e916c09747f7ac0bab03b57c0ea 100644 (file)
@@ -8760,6 +8760,11 @@ qemuProcessReconnect(void *opaque)
         goto error;
     }
 
+    if (qemuDomainAssignAddresses(obj->def, priv->qemuCaps,
+                                  driver, obj, false) < 0) {
+        goto error;
+    }
+
     /* In case the domain shutdown or fake reboot while we were not running,
      * we need to finish the shutdown or fake reboot process. And we need to
      * do it after we have virQEMUCaps filled in.
@@ -8775,11 +8780,6 @@ qemuProcessReconnect(void *opaque)
         goto cleanup;
     }
 
-    if ((qemuDomainAssignAddresses(obj->def, priv->qemuCaps,
-                                   driver, obj, false)) < 0) {
-        goto error;
-    }
-
     /* if domain requests security driver we haven't loaded, report error, but
      * do not kill the domain
      */