Skip to content

Commit

Permalink
Merge pull request #3620 from lab47/b-remove-udev-dep
Browse files Browse the repository at this point in the history
[1.1] Fixes inability to use /dev/null when inside a container
  • Loading branch information
kolyshkin committed Oct 21, 2022
2 parents 28fa513 + 3b95828 commit 974efd2
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions libcontainer/cgroups/systemd/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -293,8 +293,18 @@ func generateDeviceProperties(r *configs.Resources) ([]systemdDbus.Property, err
// rules separately to systemd) we can safely skip entries that don't
// have a corresponding path.
if _, err := os.Stat(entry.Path); err != nil {
logrus.Debugf("skipping device %s for systemd: %s", entry.Path, err)
continue
// Also check /sys/dev so that we don't depend on /dev/{block,char}
// being populated. (/dev/{block,char} is populated by udev, which
// isn't strictly required for systemd). Ironically, this happens most
// easily when starting containerd within a runc created container
// itself.

// We don't bother with securejoin here because we create entry.Path
// right above here, so we know it's safe.
if _, err := os.Stat("/sys" + entry.Path); err != nil {
logrus.Warnf("skipping device %s for systemd: %s", entry.Path, err)
continue
}
}
}
deviceAllowList = append(deviceAllowList, entry)
Expand Down

0 comments on commit 974efd2

Please sign in to comment.