From: Wen Yang Date: Fri, 3 Jan 2020 15:54:58 +0000 (+0800) Subject: PM: hibernate: improve arithmetic division in preallocate_highmem_fraction() X-Git-Tag: block-5.6-2020-02-05~84^2~2^3^2~3 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=809ed78a832df8b4ef81fee03570566c8f088f3a;p=linux-block.git PM: hibernate: improve arithmetic division in preallocate_highmem_fraction() do_div() does a 64-by-32 division. Use div64_u64() instead of do_div() if the divisor is u64, to avoid truncation to 32-bit. This change also cleans up code a tad. Signed-off-by: Wen Yang [ rjw: Subject ] Signed-off-by: Rafael J. Wysocki --- diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c index 26b9168321e7..8a6eaf7367f3 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c @@ -1566,9 +1566,7 @@ static unsigned long preallocate_image_highmem(unsigned long nr_pages) */ static unsigned long __fraction(u64 x, u64 multiplier, u64 base) { - x *= multiplier; - do_div(x, base); - return (unsigned long)x; + return div64_u64(x * multiplier, base); } static unsigned long preallocate_highmem_fraction(unsigned long nr_pages,