diff options
Diffstat (limited to 'meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-1.5.2/0008-ubi-utils-ubiformat.c-convert-to-integer-arithmetic.patch')
-rw-r--r-- | meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-1.5.2/0008-ubi-utils-ubiformat.c-convert-to-integer-arithmetic.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-1.5.2/0008-ubi-utils-ubiformat.c-convert-to-integer-arithmetic.patch b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-1.5.2/0008-ubi-utils-ubiformat.c-convert-to-integer-arithmetic.patch new file mode 100644 index 0000000000..5bd05742c8 --- /dev/null +++ b/meta-initramfs/recipes-devtools/mtd/ubi-utils-klibc-1.5.2/0008-ubi-utils-ubiformat.c-convert-to-integer-arithmetic.patch @@ -0,0 +1,44 @@ +From e6f1a85c0a3df24fe3ca9a520dc697105e75a80c Mon Sep 17 00:00:00 2001 +From: Andrea Adami <andrea.adami@gmail.com> +Date: Sat, 27 Jan 2018 09:39:26 +0100 +Subject: [PATCH 8/9] ubi-utils: ubiformat.c: convert to integer arithmetic + +Do not cast percent to double, it is just used as upper limit. +Avoid floating point to fix compilation for aarch64 against klibc: + +error: '-mgeneral-regs-only' is incompatible with floating-point code +| int percent = ((double)si->ok_cnt)/si->good_cnt * 100; +| ^~~~~~~ + +Notes: +* The checks in the code above this line ensure that si->good_cnt is not 0. + +* The code assumes si->good_cnt * 100 will not overflow, then we can use + (si->ok_cnt * 100) safely because the former is bigger. + +* The truncated result does not affect the logic: + i.e. a value of 49.9 is truncated to 49 and is still <50. + +Upstream-Status: Submitted + +Signed-off-by: Andrea Adami <andrea.adami@gmail.com> +--- + ubi-utils/ubiformat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ubi-utils/ubiformat.c b/ubi-utils/ubiformat.c +index 21409ca..d93164a 100644 +--- a/ubi-utils/ubiformat.c ++++ b/ubi-utils/ubiformat.c +@@ -843,7 +843,7 @@ int main(int argc, char * const argv[]) + } + + if (!args.override_ec && si->empty_cnt < si->good_cnt) { +- int percent = ((double)si->ok_cnt)/si->good_cnt * 100; ++ int percent = (si->ok_cnt * 100) / si->good_cnt; + + /* + * Make sure the majority of eraseblocks have valid +-- +2.7.4 + |