From 98d2b480ff9fc207f568ed2ac8dcbcb7c9d6a719 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Fri, 5 Apr 2019 14:07:57 -0700 Subject: [PATCH] Fix rounding to UINT32_MAX (#23764) In case you would have UINT32_MAX - 1 CPUs, you would round up to return UINT32_MAX CPUs. --- src/gc/unix/cgroup.cpp | 15 ++++----------- src/pal/src/misc/cgroup.cpp | 13 +++---------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/gc/unix/cgroup.cpp b/src/gc/unix/cgroup.cpp index 10b9b86..f81f14d 100644 --- a/src/gc/unix/cgroup.cpp +++ b/src/gc/unix/cgroup.cpp @@ -118,17 +118,10 @@ public: *val = 1; return true; } - - cpu_count = (double) quota / period; - if (cpu_count < UINT32_MAX - 1) - { - // round up - *val = (uint32_t)(cpu_count + 0.999999999); - } - else - { - *val = UINT32_MAX; - } + + // Calculate cpu count based on quota and round it up + cpu_count = (double) quota / period + 0.999999999; + *val = (cpu_count < UINT32_MAX) ? (uint32_t)cpu_count : UINT32_MAX; return true; } diff --git a/src/pal/src/misc/cgroup.cpp b/src/pal/src/misc/cgroup.cpp index 97b2cb2..2018df4 100644 --- a/src/pal/src/misc/cgroup.cpp +++ b/src/pal/src/misc/cgroup.cpp @@ -107,16 +107,9 @@ public: return true; } - cpu_count = (double) quota / period; - if (cpu_count < UINT_MAX - 1) - { - // round up - *val = (UINT)(cpu_count + 0.999999999); - } - else - { - *val = UINT_MAX; - } + // Calculate cpu count based on quota and round it up + cpu_count = (double) quota / period + 0.999999999; + *val = (cpu_count < UINT_MAX) ? (UINT)cpu_count : UINT_MAX; return true; } -- 2.7.4