From 1241670abd12a324ff80fbbf2f490dcb32fd00b0 Mon Sep 17 00:00:00 2001 From: Jiang Jiacheng Date: Wed, 28 Sep 2022 21:53:28 +0800 Subject: [PATCH] qemu: Init address before qemuProcessShutdownOrReboot during reconnect process 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 Signed-off-by: Michal Privoznik Reviewed-by: Michal Privoznik --- src/qemu/qemu_process.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d78e91efed..e6fd9395de 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -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 */