Skip to content

Commit

Permalink
overlayutils: Add fastpath for userxattr check
Browse files Browse the repository at this point in the history
Cleaning up TODO's. If we're on >= 5.11 we need userxattr so check
the kernel version to skip the manual check via mounting. It feels
odd to use contrib/seccomp here but the alternative is pulling that
kernel parsing code out into the main pkgs. Another is using the moby
parser but that's in moby/moby which is also a dep we don't want here..

Signed-off-by: Danny Canter <danny@dcantah.dev>
  • Loading branch information
dcantah committed Nov 1, 2022
1 parent 8167751 commit 4b2a23e
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions snapshots/overlay/overlayutils/check.go
Expand Up @@ -24,6 +24,7 @@ import (
"os"
"path/filepath"

kernel "github.com/containerd/containerd/contrib/seccomp/kernelversion"
"github.com/containerd/containerd/log"
"github.com/containerd/containerd/mount"
"github.com/containerd/containerd/pkg/userns"
Expand Down Expand Up @@ -113,10 +114,14 @@ func NeedsUserXAttr(d string) (bool, error) {
return false, nil
}

// TODO: add fast path for kernel >= 5.11 .
// Fast path on kernels >= 5.11
//
// Keep in mind that distro vendors might be going to backport the patch to older kernels.
// So we can't completely remove the check.
// Keep in mind that distro vendors might be going to backport the patch to older kernels
// so we can't completely remove the "slow path".
fiveDotEleven := kernel.KernelVersion{Kernel: 5, Major: 11}
if ok, err := kernel.GreaterEqualThan(fiveDotEleven); err == nil && ok {
return true, nil
}

tdRoot := filepath.Join(d, "userxattr-check")
if err := os.RemoveAll(tdRoot); err != nil {
Expand Down

0 comments on commit 4b2a23e

Please sign in to comment.