Skip to content
This repository was archived by the owner on Oct 13, 2023. It is now read-only.

Commit dab9e68

Browse files
committed
SELinux: fix ENOTSUP errors not being detected when relabeling
Commit 12c7541f1f2d616967f9eecce182789de7e2a238 updated the opencontainers/selinux dependency to v1.3.1, which had a breaking change in the errors that were returned. Before v1.3.1, the "raw" `syscall.ENOTSUP` was returned if the underlying filesystem did not support xattrs, but later versions wrapped the error, which caused our detection to fail. This patch uses `errors.Is()` to check for the underlying error. This requires github.com/pkg/errors v0.9.1 or above (older versions could use `errors.Cause()`, but are not compatible with "native" wrapping of errors in Go 1.13 and up, and could potentially cause these errors to not being detected again. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> (cherry picked from commit 49f8a4224cc22f94169cfb70d30d8afffa2e319a) Signed-off-by: Sebastiaan van Stijn <github@gone.nl> Upstream-commit: 57f6c9a0ef63ae15c47bb913f99d50aef4b6ec1e Component: engine
1 parent 7fdbfac commit dab9e68

2 files changed

Lines changed: 2 additions & 3 deletions

File tree

components/engine/container/container_unix.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"github.com/opencontainers/selinux/go-selinux/label"
2121
"github.com/pkg/errors"
2222
"github.com/sirupsen/logrus"
23-
"golang.org/x/sys/unix"
2423
)
2524

2625
const (
@@ -147,7 +146,7 @@ func (container *Container) CopyImagePathContent(v volume.Volume, destination st
147146
logrus.Warnf("error while unmounting volume %s: %v", v.Name(), err)
148147
}
149148
}()
150-
if err := label.Relabel(path, container.MountLabel, true); err != nil && err != unix.ENOTSUP {
149+
if err := label.Relabel(path, container.MountLabel, true); err != nil && !errors.Is(err, syscall.ENOTSUP) {
151150
return err
152151
}
153152
return copyExistingContents(rootfs, path)

components/engine/volume/mounts/mounts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ func (m *MountPoint) Setup(mountLabel string, rootIDs idtools.Identity, checkFun
113113
return
114114
}
115115
err = label.Relabel(sourcePath, mountLabel, label.IsShared(m.Mode))
116-
if err == syscall.ENOTSUP {
116+
if errors.Is(err, syscall.ENOTSUP) {
117117
err = nil
118118
}
119119
if err != nil {

0 commit comments

Comments
 (0)