[libvirt] [PATCH] Fix QEMU migration cookie crash for guests with no graphics

Daniel P. Berrange berrange at redhat.com
Thu May 19 11:13:59 UTC 2011


On Thu, May 19, 2011 at 08:41:48AM +0800, Wen Congyang wrote:
> At 05/19/2011 01:08 AM, Daniel P. Berrange Write:
> > When generating a cookie for a guest with no data, the
> > QEMU_MIGRATION_COOKIE_GRAPHICS flag was set even if no
> > graphics data was added. Avoid setting the flag unless
> > it was needed, also add a safety check for mig->graphics
> > being non-NULL
> > 
> > * src/qemu/qemu_migration.c: Avoid cookie crash for guest
> >   with no graphics
> > ---
> >  src/qemu/qemu_migration.c |   14 ++++++++------
> >  1 files changed, 8 insertions(+), 6 deletions(-)
> > 
> > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> > index fcf8f9c..4d7bc38 100644
> > --- a/src/qemu/qemu_migration.c
> > +++ b/src/qemu/qemu_migration.c
> > @@ -252,11 +252,12 @@ qemuMigrationCookieAddGraphics(qemuMigrationCookiePtr mig,
> >  
> >      if (dom->def->ngraphics == 1 &&
> >          (dom->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC ||
> > -         dom->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) &&
> > -        !(mig->graphics = qemuMigrationCookieGraphicsAlloc(driver, dom->def->graphics[0])))
> > -        return -1;
> > -
> > -    mig->flags |= QEMU_MIGRATION_COOKIE_GRAPHICS;
> > +         dom->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE)) {
> > +        if (!(mig->graphics =
> > +              qemuMigrationCookieGraphicsAlloc(driver, dom->def->graphics[0])))
> > +            return -1;
> > +        mig->flags |= QEMU_MIGRATION_COOKIE_GRAPHICS;
> > +    }
> >  
> >      return 0;
> >  }
> > @@ -295,7 +296,8 @@ static void qemuMigrationCookieXMLFormat(virBufferPtr buf,
> >      virBufferEscapeString(buf, "  <hostname>%s</hostname>\n", mig->hostname);
> >      virBufferAsprintf(buf, "  <hostuuid>%s</hostuuid>\n", hostuuidstr);
> >  
> > -    if (mig->flags & QEMU_MIGRATION_COOKIE_GRAPHICS)
> > +    if ((mig->flags & QEMU_MIGRATION_COOKIE_GRAPHICS) &&
> > +        mig->graphics)
> >          qemuMigrationCookieGraphicsXMLFormat(buf, mig->graphics);
> >  
> >      virBufferAddLit(buf, "</qemu-migration>\n");
> 
> This duplicates my patch:
> 
> https://www.redhat.com/archives/libvir-list/2011-May/msg01095.html

I fixed it with the second chunk of this patch originally, but pulled
in the change that you made too, for added safety.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list