diff --git a/cgroup2/manager.go b/cgroup2/manager.go index 3536fc97..8cf91349 100644 --- a/cgroup2/manager.go +++ b/cgroup2/manager.go @@ -224,6 +224,10 @@ func Load(group string, opts ...InitOpts) (*Manager, error) { return nil, err } path := filepath.Join(c.mountpoint, group) + _, err := os.Stat(path) + if err != nil { + return nil, err + } return &Manager{ unifiedMountpoint: c.mountpoint, path: path, diff --git a/cgroup2/manager_test.go b/cgroup2/manager_test.go index 4902e576..aa9a0615 100644 --- a/cgroup2/manager_test.go +++ b/cgroup2/manager_test.go @@ -19,6 +19,7 @@ package cgroup2 import ( "context" "fmt" + "io/fs" "os" "os/exec" "syscall" @@ -466,3 +467,22 @@ func BenchmarkStat(b *testing.B) { func toPtr[T any](v T) *T { return &v } + +func TestLoadOKWhenExistent(t *testing.T) { + checkCgroupMode(t) + group := "/existent" + + _, err := NewManager(defaultCgroup2Path, group, &Resources{}) + require.NoError(t, err) + + _, err = Load(group) + require.NoError(t, err) +} + +func TestLoadErrorsWhenNonExistent(t *testing.T) { + checkCgroupMode(t) + group := "/nonexistent" + + _, err := Load(group) + require.ErrorIs(t, err, fs.ErrNotExist) +}