diff options
author | Andrei Gherzan <andrei.gherzan@huawei.com> | 2021-02-20 01:12:55 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-03-04 17:39:10 +0000 |
commit | ec6f9694eaea79a264cdf76f6caf82fe8b461e4b (patch) | |
tree | dd37449bc4321815a028e3bf9c26518d1a911ec4 /meta/recipes-devtools | |
parent | 8db35527ff023413b4fbf0b7ecc524676a80e0ae (diff) | |
download | poky-ec6f9694eaea79a264cdf76f6caf82fe8b461e4b.tar.gz |
qemu: Backport patch to avoid assertion fails on icache line size
Due to a bug in glibc 2.33, the value of the icache line size is now
reported as unsupported option. This breaks qemu at runtime with:
cacheinfo.c:182: init_cache_info: Assertion `(isize & (isize - 1)) == 0'
failed.
Aborted (core dumped)
We haven't caught this one yet because we were already on qemu 5.2.0
when we started to play with glibc 2.33 so it was only reproducible on
dunfell.
(From OE-Core rev: fdb3ff363c6f8408058f362f3bfdeee4e18150fa)
Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools')
-rw-r--r-- | meta/recipes-devtools/qemu/qemu.inc | 1 | ||||
-rw-r--r-- | meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch | 48 |
2 files changed, 49 insertions, 0 deletions
diff --git a/meta/recipes-devtools/qemu/qemu.inc b/meta/recipes-devtools/qemu/qemu.inc index 7a963ad57c..a1a418374f 100644 --- a/meta/recipes-devtools/qemu/qemu.inc +++ b/meta/recipes-devtools/qemu/qemu.inc | |||
@@ -28,6 +28,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \ | |||
28 | file://0009-Fix-webkitgtk-builds.patch \ | 28 | file://0009-Fix-webkitgtk-builds.patch \ |
29 | file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch \ | 29 | file://0010-configure-Add-pkg-config-handling-for-libgcrypt.patch \ |
30 | file://0011-hw-i386-pc-fix-regression-in-parsing-vga-cmdline-par.patch \ | 30 | file://0011-hw-i386-pc-fix-regression-in-parsing-vga-cmdline-par.patch \ |
31 | file://0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch \ | ||
31 | file://CVE-2019-15890.patch \ | 32 | file://CVE-2019-15890.patch \ |
32 | file://CVE-2020-1711.patch \ | 33 | file://CVE-2020-1711.patch \ |
33 | file://CVE-2020-7039-1.patch \ | 34 | file://CVE-2020-7039-1.patch \ |
diff --git a/meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch b/meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch new file mode 100644 index 0000000000..741a4fce0e --- /dev/null +++ b/meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch | |||
@@ -0,0 +1,48 @@ | |||
1 | From 00b5032eaddb7193f03f0a28b10286244d2e2a7b Mon Sep 17 00:00:00 2001 | ||
2 | From: Carlos Santos <casantos@redhat.com> | ||
3 | Date: Thu, 17 Oct 2019 09:37:13 -0300 | ||
4 | Subject: [PATCH 1/1] util/cacheinfo: fix crash when compiling with uClibc | ||
5 | |||
6 | uClibc defines _SC_LEVEL1_ICACHE_LINESIZE and _SC_LEVEL1_DCACHE_LINESIZE | ||
7 | but the corresponding sysconf calls returns -1, which is a valid result, | ||
8 | meaning that the limit is indeterminate. | ||
9 | |||
10 | Handle this situation using the fallback values instead of crashing due | ||
11 | to an assertion failure. | ||
12 | |||
13 | Signed-off-by: Carlos Santos <casantos@redhat.com> | ||
14 | Message-Id: <20191017123713.30192-1-casantos@redhat.com> | ||
15 | Signed-off-by: Richard Henderson <richard.henderson@linaro.org> | ||
16 | |||
17 | Upstream-status: Backport | ||
18 | Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com> | ||
19 | --- | ||
20 | util/cacheinfo.c | 10 ++++++++-- | ||
21 | 1 file changed, 8 insertions(+), 2 deletions(-) | ||
22 | |||
23 | diff --git a/util/cacheinfo.c b/util/cacheinfo.c | ||
24 | index ea6f3e99bf..d94dc6adc8 100644 | ||
25 | --- a/util/cacheinfo.c | ||
26 | +++ b/util/cacheinfo.c | ||
27 | @@ -93,10 +93,16 @@ static void sys_cache_info(int *isize, int *dsize) | ||
28 | static void sys_cache_info(int *isize, int *dsize) | ||
29 | { | ||
30 | # ifdef _SC_LEVEL1_ICACHE_LINESIZE | ||
31 | - *isize = sysconf(_SC_LEVEL1_ICACHE_LINESIZE); | ||
32 | + int tmp_isize = (int) sysconf(_SC_LEVEL1_ICACHE_LINESIZE); | ||
33 | + if (tmp_isize > 0) { | ||
34 | + *isize = tmp_isize; | ||
35 | + } | ||
36 | # endif | ||
37 | # ifdef _SC_LEVEL1_DCACHE_LINESIZE | ||
38 | - *dsize = sysconf(_SC_LEVEL1_DCACHE_LINESIZE); | ||
39 | + int tmp_dsize = (int) sysconf(_SC_LEVEL1_DCACHE_LINESIZE); | ||
40 | + if (tmp_dsize > 0) { | ||
41 | + *dsize = tmp_dsize; | ||
42 | + } | ||
43 | # endif | ||
44 | } | ||
45 | #endif /* sys_cache_info */ | ||
46 | -- | ||
47 | 2.30.1 | ||
48 | |||