Patchwork qxl: reset update_surface

login
register
mail settings
Submitter Alon Levy
Date Oct. 23, 2011, 3:03 p.m.
Message ID <1319382232-23392-1-git-send-email-alevy@redhat.com>
Download mbox | patch
Permalink /patch/121235/
State New
Headers show

Comments

Alon Levy - Oct. 23, 2011, 3:03 p.m.
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>
---
 hw/qxl.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Gerd Hoffmann - Oct. 24, 2011, 7:08 a.m.
On 10/23/11 17:03, Alon Levy wrote:
> 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.

Patch added to spice patch queue.

thanks,
  Gerd

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index 03848ed..632658d 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -330,6 +330,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);