summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch')
-rw-r--r--meta/recipes-devtools/qemu/qemu/0012-util-cacheinfo-fix-crash-when-compiling-with-uClibc.patch48
1 files changed, 48 insertions, 0 deletions
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 @@
1From 00b5032eaddb7193f03f0a28b10286244d2e2a7b Mon Sep 17 00:00:00 2001
2From: Carlos Santos <casantos@redhat.com>
3Date: Thu, 17 Oct 2019 09:37:13 -0300
4Subject: [PATCH 1/1] util/cacheinfo: fix crash when compiling with uClibc
5
6uClibc defines _SC_LEVEL1_ICACHE_LINESIZE and _SC_LEVEL1_DCACHE_LINESIZE
7but the corresponding sysconf calls returns -1, which is a valid result,
8meaning that the limit is indeterminate.
9
10Handle this situation using the fallback values instead of crashing due
11to an assertion failure.
12
13Signed-off-by: Carlos Santos <casantos@redhat.com>
14Message-Id: <20191017123713.30192-1-casantos@redhat.com>
15Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
16
17Upstream-status: Backport
18Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
19---
20 util/cacheinfo.c | 10 ++++++++--
21 1 file changed, 8 insertions(+), 2 deletions(-)
22
23diff --git a/util/cacheinfo.c b/util/cacheinfo.c
24index 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--
472.30.1
48