linux: handle cgroups cpu.max with limit < period (#4853)

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
This commit is contained in:
Ben Noordhuis 2025-07-31 11:54:57 +02:00 committed by GitHub
parent e70d5e8a12
commit 2e7c07f4d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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;