qemu/hw/display
Gerd Hoffmann 50628d3479 cirrus/vnc: zap bitblit support from console code.
There is a special code path (dpy_gfx_copy) to allow graphic emulation
notify user interface code about bitblit operations carryed out by
guests.  It is supported by cirrus and vnc server.  The intended purpose
is to optimize display scrolls and just send over the scroll op instead
of a full display update.

This is rarely used these days though because modern guests simply don't
use the cirrus blitter any more.  Any linux guest using the cirrus drm
driver doesn't.  Any windows guest newer than winxp doesn't ship with a
cirrus driver any more and thus uses the cirrus as simple framebuffer.

So this code tends to bitrot and bugs can go unnoticed for a long time.
See for example commit "3e10c3e vnc: fix qemu crash because of SIGSEGV"
which fixes a bug lingering in the code for almost a year, added by
commit "c7628bf vnc: only alloc server surface with clients connected".

Also the vnc server will throttle the frame rate in case it figures the
network can't keep up (send buffers are full).  This doesn't work with
dpy_gfx_copy, for any copy operation sent to the vnc client we have to
send all outstanding updates beforehand, otherwise the vnc client might
run the client side blit on outdated data and thereby corrupt the
display.  So this dpy_gfx_copy "optimization" might even make things
worse on slow network links.

Lets kill it once for all.

Oh, and one more reason: Turns out (after writing the patch) we have a
security bug in that code path ...

Fixes: CVE-2016-9603
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 1489494419-14340-1-git-send-email-kraxel@redhat.com
2017-03-16 08:58:15 +01:00
..
ads7846.c ssi: change ssi_slave_init to be a realize ops 2016-07-04 13:15:22 +01:00
bcm2835_fb.c
blizzard.c
cg3.c
cirrus_vga_rop2.h
cirrus_vga_rop.h fix :cirrus_vga fix OOB read case qemu Segmentation fault 2017-03-16 08:58:15 +01:00
cirrus_vga.c cirrus/vnc: zap bitblit support from console code. 2017-03-16 08:58:15 +01:00
dpcd.c aux: Rename aux.[ch] to auxbus.[ch] for the benefit of Windows 2016-07-07 13:47:01 +01:00
exynos4210_fimd.c
framebuffer.c hw/display/framebuffer.c: Avoid overflow for framebuffers > 4GB 2017-01-24 23:26:53 +03:00
framebuffer.h
g364fb.c migration: consolidate VMStateField.start 2017-02-13 17:27:13 +00:00
jazz_led.c
Makefile.objs introduce xlnx-dp 2016-06-14 16:01:03 +01:00
milkymist-tmu2.c lm32: milkymist-tmu2: fix a third integer overflow 2017-02-28 09:03:39 +03:00
milkymist-vgafb_template.h
milkymist-vgafb.c milkymist: update specification URLs 2016-06-20 18:12:04 +02:00
omap_dss.c
omap_lcd_template.h
omap_lcdc.c
pl110_template.h
pl110.c hw/display: QOM'ify pl110.c 2016-10-24 16:26:56 +01:00
pxa2xx_lcd.c
pxa2xx_template.h
qxl-logger.c
qxl-render.c
qxl.c qxl: clear guest_cursor on QXL_CURSOR_HIDE 2017-03-09 09:47:26 +01:00
qxl.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sm501_template.h
sm501.c char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
ssd0303.c i2c: Allow I2C devices to NAK start events 2017-01-09 11:40:20 +00:00
ssd0323.c vmstateify ssd0323 display 2016-09-22 18:13:08 +01:00
tc6393xb_template.h
tc6393xb.c
tcx.c
trace-events cirrus: replace debug printf with trace points 2017-02-10 16:49:45 +01:00
vga_int.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vga-helpers.h
vga-isa-mm.c
vga-isa.c portio: keep references on portio 2016-09-08 18:05:21 +04:00
vga-pci.c
vga.c vga: replace debug printf with trace points 2017-02-10 16:49:45 +01:00
vga.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
virtio-gpu-3d.c virtio-gpu: use dpy_gl_scanout_disable 2017-02-27 16:15:29 +01:00
virtio-gpu-pci.c virtio-gpu-pci: tag as not hotpluggable 2016-09-13 09:26:58 +02:00
virtio-gpu.c virtio-gpu: fix memory leak in set scanout 2017-02-10 16:49:45 +01:00
virtio-vga.c virtio: rename the bar index field name in VirtIOPCIProxy 2016-10-08 11:25:29 +03:00
vmware_vga.c vmsvga: correct bitmap and pixmap size checks 2016-09-13 09:24:35 +02:00
xenfb.c xen: Rename xen_be_find_xendev 2016-10-28 17:54:39 -07:00
xlnx_dp.c hw: Fix typos found by codespell 2017-01-24 23:26:52 +03:00