diff options
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/CVE-2017-17381.patch')
-rw-r--r-- | meta/recipes-devtools/qemu/qemu/CVE-2017-17381.patch | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2017-17381.patch b/meta/recipes-devtools/qemu/qemu/CVE-2017-17381.patch deleted file mode 100644 index 416771cdcb..0000000000 --- a/meta/recipes-devtools/qemu/qemu/CVE-2017-17381.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 758ead31c7e17bf17a9ef2e0ca1c3e86ab296b43 Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Wed, 29 Nov 2017 23:14:27 +0530 -Subject: [PATCH] virtio: check VirtQueue Vring object is set - -A guest could attempt to use an uninitialised VirtQueue object -or unset Vring.align leading to a arithmetic exception. Add check -to avoid it. - -Upstream-Status: Backport -CVE: CVE-2017-17381 - -Reported-by: Zhangboxian <zhangboxian@huawei.com> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Reviewed-by: Michael S. Tsirkin <mst@redhat.com> -Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> -Reviewed-by: Cornelia Huck <cohuck@redhat.com> -Signed-off-by: Catalin Enache <catalin.enache@windriver.com> ---- - hw/virtio/virtio.c | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c -index 703e672..ad564b0 100644 ---- a/hw/virtio/virtio.c -+++ b/hw/virtio/virtio.c -@@ -182,7 +182,7 @@ void virtio_queue_update_rings(VirtIODevice *vdev, int n) - { - VRing *vring = &vdev->vq[n].vring; - -- if (!vring->desc) { -+ if (!vring->num || !vring->desc || !vring->align) { - /* not yet setup -> nothing to do */ - return; - } -@@ -1414,6 +1414,9 @@ void virtio_config_modern_writel(VirtIODevice *vdev, - - void virtio_queue_set_addr(VirtIODevice *vdev, int n, hwaddr addr) - { -+ if (!vdev->vq[n].vring.num) { -+ return; -+ } - vdev->vq[n].vring.desc = addr; - virtio_queue_update_rings(vdev, n); - } -@@ -1426,6 +1429,9 @@ hwaddr virtio_queue_get_addr(VirtIODevice *vdev, int n) - void virtio_queue_set_rings(VirtIODevice *vdev, int n, hwaddr desc, - hwaddr avail, hwaddr used) - { -+ if (!vdev->vq[n].vring.num) { -+ return; -+ } - vdev->vq[n].vring.desc = desc; - vdev->vq[n].vring.avail = avail; - vdev->vq[n].vring.used = used; -@@ -1494,8 +1500,10 @@ void virtio_queue_set_align(VirtIODevice *vdev, int n, int align) - */ - assert(k->has_variable_vring_alignment); - -- vdev->vq[n].vring.align = align; -- virtio_queue_update_rings(vdev, n); -+ if (align) { -+ vdev->vq[n].vring.align = align; -+ virtio_queue_update_rings(vdev, n); -+ } - } - - static bool virtio_queue_notify_aio_vq(VirtQueue *vq) --- -2.10.2 - |