summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu/CVE-2020-25085.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/CVE-2020-25085.patch')
-rw-r--r--meta/recipes-devtools/qemu/qemu/CVE-2020-25085.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/CVE-2020-25085.patch b/meta/recipes-devtools/qemu/qemu/CVE-2020-25085.patch
new file mode 100644
index 0000000000..be19256cef
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu/CVE-2020-25085.patch
@@ -0,0 +1,46 @@
1From dfba99f17feb6d4a129da19d38df1bcd8579d1c3 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
3Date: Tue, 1 Sep 2020 15:22:06 +0200
4Subject: [PATCH] hw/sd/sdhci: Fix DMA Transfer Block Size field
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9The 'Transfer Block Size' field is 12-bit wide.
10
11See section '2.2.2. Block Size Register (Offset 004h)' in datasheet.
12
13Two different bug reproducer available:
14- https://bugs.launchpad.net/qemu/+bug/1892960
15- https://ruhr-uni-bochum.sciebo.de/s/NNWP2GfwzYKeKwE?path=%2Fsdhci_oob_write1
16
17Cc: qemu-stable@nongnu.org
18Buglink: https://bugs.launchpad.net/qemu/+bug/1892960
19Fixes: d7dfca0807a ("hw/sdhci: introduce standard SD host controller")
20Reported-by: Alexander Bulekov <alxndr@bu.edu>
21Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
22Reviewed-by: Prasad J Pandit <pjp@fedoraproject.org>
23Tested-by: Alexander Bulekov <alxndr@bu.edu>
24Message-Id: <20200901140411.112150-3-f4bug@amsat.org>
25
26Upstream-Status: Backport
27CVE: CVE-2020-25085
28Signed-off-by: Armin Kuster <akuster@mvista.com>
29
30---
31 hw/sd/sdhci.c | 2 +-
32 1 file changed, 1 insertion(+), 1 deletion(-)
33
34Index: qemu-4.2.0/hw/sd/sdhci.c
35===================================================================
36--- qemu-4.2.0.orig/hw/sd/sdhci.c
37+++ qemu-4.2.0/hw/sd/sdhci.c
38@@ -1129,7 +1129,7 @@ sdhci_write(void *opaque, hwaddr offset,
39 break;
40 case SDHC_BLKSIZE:
41 if (!TRANSFERRING_DATA(s->prnsts)) {
42- MASKED_WRITE(s->blksize, mask, value);
43+ MASKED_WRITE(s->blksize, mask, extract32(value, 0, 12));
44 MASKED_WRITE(s->blkcnt, mask >> 16, value >> 16);
45 }
46