Skip to content

runsc/cgroup: fix systemd cpuset byte order#13299

Open
copybara-service[bot] wants to merge 1 commit into
masterfrom
test/cl921523084
Open

runsc/cgroup: fix systemd cpuset byte order#13299
copybara-service[bot] wants to merge 1 commit into
masterfrom
test/cl921523084

Conversation

@copybara-service
Copy link
Copy Markdown

runsc/cgroup: fix systemd cpuset byte order

RangeToBits builds a cgroup v2 CPU or memory-node mask with big.Int, then passes big.Int.Bytes to systemd as AllowedCPUs/AllowedMemoryNodes. big.Int returns bytes in big-endian order, while systemd expects byte 0 to describe IDs 0-7, byte 1 to describe IDs 8-15, and so on.

This reverses multi-byte masks when Docker/containerd asks runsc to create a systemd transient scope. For example, an OCI cpuset of "8,184" can be applied as CPUs "0,176".

Reverse the generated byte slice before returning it and add a regression test that spans enough bytes to catch the lane reversal.

Here are a couple of related issues that "tipped us off" to this being the problem:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076814
opencontainers/runc@77cae9a

Assisted-by: OpenAI Codex

Signed-off-by: Michael Galaxy mrgalaxy@nvidia.com
FUTURE_COPYBARA_INTEGRATE_REVIEW=#13251 from mrgalaxy-source:mrgalaxy/endianfix a4f9ed0

@copybara-service copybara-service Bot added the exported Issue was exported automatically label May 27, 2026
@copybara-service copybara-service Bot force-pushed the test/cl921523084 branch 2 times, most recently from de3e598 to 6952395 Compare May 27, 2026 21:02
RangeToBits builds a cgroup v2 CPU or memory-node mask with big.Int, then passes big.Int.Bytes to systemd as AllowedCPUs/AllowedMemoryNodes. big.Int returns bytes in big-endian order, while systemd expects byte 0 to describe IDs 0-7, byte 1 to describe IDs 8-15, and so on.

This reverses multi-byte masks when Docker/containerd asks runsc to create a systemd transient scope. For example, an OCI cpuset of "8,184" can be applied as CPUs "0,176".

Reverse the generated byte slice before returning it and add a regression test that spans enough bytes to catch the lane reversal.

Here are a couple of related issues that "tipped us off" to this being the problem:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076814
opencontainers/runc@77cae9a

Assisted-by: OpenAI Codex

Signed-off-by: Michael Galaxy <mrgalaxy@nvidia.com>
FUTURE_COPYBARA_INTEGRATE_REVIEW=#13251 from mrgalaxy-source:mrgalaxy/endianfix a4f9ed0
PiperOrigin-RevId: 921523084
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

exported Issue was exported automatically

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant