Skip to content

[release/2.2] Fix unintended dropping of mount flags for read-only bind-mounts in user namespaces#12944

Merged
mxpv merged 2 commits intocontainerd:release/2.2from
k8s-infra-cherrypick-robot:cherry-pick-12941-to-release/2.2
Feb 27, 2026
Merged

[release/2.2] Fix unintended dropping of mount flags for read-only bind-mounts in user namespaces#12944
mxpv merged 2 commits intocontainerd:release/2.2from
k8s-infra-cherrypick-robot:cherry-pick-12941-to-release/2.2

Conversation

@k8s-infra-cherrypick-robot
Copy link
Copy Markdown

This is an automated cherry-pick of #12941

/assign AkihiroSuda

…ead of values

The loop `for flag := range unprivilegedFlags` iterates over slice
indices (0,1,2,3,4,5,6) rather than the actual flag values (MS_RDONLY,
MS_NODEV, etc). This was a porting error from moby/moby where the data
structure was a map (where `for k := range m` yields keys/values).

As a result, MS_NOEXEC, MS_NOATIME, MS_RELATIME, and MS_NODIRATIME are
never detected or preserved. In user namespaces, this causes bind-mount
remounts to fail with EPERM when any of these flags are locked on the
parent mount, because the kernel requires all CL_UNPRIVILEGED locked
flags to be preserved during remount.

MS_RDONLY (0x1), MS_NOSUID (0x2), and MS_NODEV (0x4) happened to work
by coincidence because their values equal low index numbers.

Fix by using `for _, flag := range` to iterate over values.

Signed-off-by: Luke Hinds <[email protected]>
Mounts a tmpfs with MS_NOEXEC, MS_NOATIME, and MS_NODIRATIME and
verifies that getUnprivilegedMountFlags detects all of them. These
three flags were the ones missed by the range-over-indices bug.

Also verifies that flags not present on the mount (MS_NOSUID,
MS_NODEV, MS_RDONLY) are not falsely reported.

Signed-off-by: Luke Hinds <[email protected]>
@github-project-automation github-project-automation Bot moved this from Needs Triage to Review In Progress in Pull Request Review Feb 27, 2026
@mxpv mxpv merged commit 46fabcc into containerd:release/2.2 Feb 27, 2026
58 of 59 checks passed
@github-project-automation github-project-automation Bot moved this from Review In Progress to Done in Pull Request Review Feb 27, 2026
@samuelkarp samuelkarp changed the title [release/2.2] core/mount: fix getUnprivilegedMountFlags iterating over indices instead of values [release/2.2] Fix unintended dropping of mount flags for read-only bind-mounts in user namespaces Mar 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

7 participants