OSDN Git Service

qxl: reset update_surface
authorAlon Levy <alevy@redhat.com>
Sun, 23 Oct 2011 15:03:52 +0000 (17:03 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 25 Oct 2011 12:00:54 +0000 (14:00 +0200)
update init_qxl_ram to reset update_surface to 0. This fixes one case
of breakage when installing an old driver in a vm that had a new driver
installed. The newer driver would know about surface creation and would
change update_surface to !=0, then a reset would happen, all surfaces
are destroyed, then the old driver is initialized and issues an
UPDATE_AREA, and spice server aborts on invalid surface.

RHBZ: 690427

Signed-off-by: Alon Levy <alevy@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/qxl.c

index 3a3b3a4..12f71aa 100644 (file)
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -331,6 +331,7 @@ static void init_qxl_ram(PCIQXLDevice *d)
     d->ram->magic       = cpu_to_le32(QXL_RAM_MAGIC);
     d->ram->int_pending = cpu_to_le32(0);
     d->ram->int_mask    = cpu_to_le32(0);
+    d->ram->update_surface = 0;
     SPICE_RING_INIT(&d->ram->cmd_ring);
     SPICE_RING_INIT(&d->ram->cursor_ring);
     SPICE_RING_INIT(&d->ram->release_ring);