From: Michal Privoznik Date: Tue, 5 May 2020 11:45:44 +0000 (+0200) Subject: qemuDomainCleanupRun: Actually run cleanup callbacks in reverse order X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=06fc99b6ceb846b07e1cae3d82916ef50ca5f60e;p=libvirt.git qemuDomainCleanupRun: Actually run cleanup callbacks in reverse order We have a framework to register cleanup callbacks that are run when a domain is shut down. The idea is to run callbacks in reverse order than they were registered. However, looking at the code this is not the case. Fortunately, this framework is used to register a single callback and a single callback only - qemuMigrationDstPrepareCleanup() - therefore there was no problem just yet. Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 9c629c31a3..7c71b797bc 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8032,18 +8032,14 @@ qemuDomainCleanupRun(virQEMUDriverPtr driver, virDomainObjPtr vm) { qemuDomainObjPrivatePtr priv = vm->privateData; - size_t i; VIR_DEBUG("driver=%p, vm=%s", driver, vm->def->name); /* run cleanup callbacks in reverse order */ - for (i = 0; i < priv->ncleanupCallbacks; i++) { - if (priv->cleanupCallbacks[priv->ncleanupCallbacks - (i + 1)]) - priv->cleanupCallbacks[i](driver, vm); - } + while (priv->ncleanupCallbacks) + priv->cleanupCallbacks[--priv->ncleanupCallbacks](driver, vm); VIR_FREE(priv->cleanupCallbacks); - priv->ncleanupCallbacks = 0; priv->ncleanupCallbacks_max = 0; }