[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