aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2025-07-31 11:54:57 +0200
committerGitHub <noreply@github.com>2025-07-31 11:54:57 +0200
commit2e7c07f4d10c1b391a7138471c49f4aae3c47d8d (patch)
tree65f4e7bc84ef10518c18849e73f4413223f027b4
parente70d5e8a12e9889822631527654fe4b89c8a0dbd (diff)
downloadlibuv-v1.x.tar.gz
libuv-v1.x.zip
linux: handle cgroups cpu.max with limit < period (#4853)HEADv1.xmain
This apparently manifests when one passes `--cpu=.5` to docker because then /sys/fs/cgroup/cpu.max looks like `50000 100000`, and 50000 divided by 100000 is zero when using integer math. Return 1 in that case, indicating there is at least one CPU available. Returning 0 makes no sense because there is always at least one CPU available, otherwise the program wouldn't be running. Fixes: https://github.com/nodejs/node/issues/59200
-rw-r--r--src/unix/linux.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/unix/linux.c b/src/unix/linux.c
index 1a62d78d..4bfb2d2e 100644
--- a/src/unix/linux.c
+++ b/src/unix/linux.c
@@ -2363,6 +2363,8 @@ static int uv__get_cgroupv2_constrained_cpu(const char* cgroup,
goto next;
*quota = limit / period;
+ if (*quota == 0)
+ *quota = 1;
if (*quota < min_quota)
min_quota = *quota;