[PATCH] qemu: fix missing cleanup on error in qemuSaveImageStartVM

Jiri Denemark jdenemar at redhat.com
Thu Dec 16 09:35:44 UTC 2021


On Wed, Dec 15, 2021 at 16:14:34 +0100, Jiri Denemark wrote:
> On Wed, Dec 15, 2021 at 18:37:21 +0530, Ani Sinha wrote:
> > Commit 52521de8332c2323bd ("qemu: Use qemuDomainSaveStatus") replaced a call
> > to virDomainObjSave() with qemuDomainSaveStatus() as a part of cleanup. Since
> > qemuDomainSaveStatus() does not indicate any failure through its return code,
> > the error handling cleanup code got eliminated in the process. Thus upon
> > failure, we will no longer killing the started qemu process. This commit fixes
> > this by reverting the change that was introduced with the above commit.
> > 
> > Fixes: 52521de8332c2323bd ("qemu: Use qemuDomainSaveStatus")
> > 
> > Signed-off-by: Ani Sinha <ani at anisinha.ca>
> > ---
> >  src/qemu/qemu_saveimage.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/qemu/qemu_saveimage.c b/src/qemu/qemu_saveimage.c
> > index 28d6098dd8..557ee2cd21 100644
> > --- a/src/qemu/qemu_saveimage.c
> > +++ b/src/qemu/qemu_saveimage.c
> > @@ -586,6 +586,7 @@ qemuSaveImageStartVM(virConnectPtr conn,
> >      VIR_AUTOCLOSE intermediatefd = -1;
> >      g_autoptr(virCommand) cmd = NULL;
> >      g_autofree char *errbuf = NULL;
> > +    g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
> >      virQEMUSaveHeader *header = &data->header;
> >      g_autoptr(qemuDomainSaveCookie) cookie = NULL;
> >      int rc = 0;
> > @@ -679,7 +680,10 @@ qemuSaveImageStartVM(virConnectPtr conn,
> >                                 "%s", _("failed to resume domain"));
> >              goto cleanup;
> >          }
> > -        qemuDomainSaveStatus(vm);
> > +        if (virDomainObjSave(vm, driver->xmlopt, cfg->stateDir) < 0) {
> > +            VIR_WARN("Failed to save status on vm %s", vm->def->name);
> > +            goto cleanup;
> > +        }
> >      } else {
> >          int detail = (start_paused ? VIR_DOMAIN_EVENT_SUSPENDED_PAUSED :
> >                        VIR_DOMAIN_EVENT_SUSPENDED_RESTORED);
> 
> Oops, I apparently overlooked the goto statement here.
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>

Heh, bad key pressed, what I really wanted to say is:

Reviewed-by: Jiri Denemark <jdenemar at redhat.com>

and pushed.




More information about the libvir-list mailing list