summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu/CVE-2016-9912.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/CVE-2016-9912.patch')
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2016-9912.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2016-9912.patch b/meta/recipes-devtools/qemu/qemu/CVE-2016-9912.patch
new file mode 100644
index 0000000000..c009ffd96a
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/CVE-2016-9912.patch
@@ -0,0 +1,45 @@
1From b8e23926c568f2e963af39028b71c472e3023793 Mon Sep 17 00:00:00 2001
2From: Li Qiang <liq3ea@gmail.com>
3Date: Mon, 28 Nov 2016 21:29:25 -0500
4Subject: [PATCH] virtio-gpu: call cleanup mapping function in resource destroy
5
6If the guest destroy the resource before detach banking, the 'iov'
7and 'addrs' field in resource is not freed thus leading memory
8leak issue. This patch avoid this.
9
10CVE: CVE-2016-9912
11Upstream-Status: Backport
12
13Signed-off-by: Li Qiang <liq3ea@gmail.com>
14Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
15Message-id: 1480386565-10077-1-git-send-email-liq3ea@gmail.com
16Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
17Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
18---
19 hw/display/virtio-gpu.c | 3 +++
20 1 file changed, 3 insertions(+)
21
22diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
23index ed2b6d3..6a26258 100644
24--- a/hw/display/virtio-gpu.c
25+++ b/hw/display/virtio-gpu.c
26@@ -28,6 +28,8 @@
27 static struct virtio_gpu_simple_resource*
28 virtio_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id);
29
30+static void virtio_gpu_cleanup_mapping(struct virtio_gpu_simple_resource *res);
31+
32 #ifdef CONFIG_VIRGL
33 #include <virglrenderer.h>
34 #define VIRGL(_g, _virgl, _simple, ...) \
35@@ -364,6 +366,7 @@ static void virtio_gpu_resource_destroy(VirtIOGPU *g,
36 struct virtio_gpu_simple_resource *res)
37 {
38 pixman_image_unref(res->image);
39+ virtio_gpu_cleanup_mapping(res);
40 QTAILQ_REMOVE(&g->reslist, res, next);
41 g->hostmem -= res->hostmem;
42 g_free(res);
43--
441.9.1
45