diff --git a/cgroup1/pids.go b/cgroup1/pids.go index 89818332..25421a21 100644 --- a/cgroup1/pids.go +++ b/cgroup1/pids.go @@ -47,10 +47,11 @@ func (p *pidsController) Create(path string, resources *specs.LinuxResources) er if err := os.MkdirAll(p.Path(path), defaultDirPerm); err != nil { return err } - if resources.Pids != nil && resources.Pids.Limit > 0 { + if resources.Pids != nil && resources.Pids.Limit != nil && + *resources.Pids.Limit > 0 { return os.WriteFile( filepath.Join(p.Path(path), "pids.max"), - []byte(strconv.FormatInt(resources.Pids.Limit, 10)), + []byte(strconv.FormatInt(*resources.Pids.Limit, 10)), defaultFilePerm, ) } diff --git a/cgroup1/pids_test.go b/cgroup1/pids_test.go index d67e6716..df873383 100644 --- a/cgroup1/pids_test.go +++ b/cgroup1/pids_test.go @@ -43,7 +43,8 @@ func TestPids(t *testing.T) { } resources := specs.LinuxResources{} resources.Pids = &specs.LinuxPids{} - resources.Pids.Limit = int64(10) + pidsLimit := int64(10) + resources.Pids.Limit = &pidsLimit err = pids.Create("test", &resources) if err != nil { t.Fatal(err) @@ -69,7 +70,7 @@ func TestPids(t *testing.T) { t.Fatalf("expected pids limit %q but received %q", uint64(5), metrics.Pids.Current) } - resources.Pids.Limit = int64(15) + pidsLimit = 15 err = pids.Update("test", &resources) if err != nil { t.Fatal(err) @@ -203,9 +204,10 @@ func BenchmarkTestPids(b *testing.B) { if pids == nil { b.Fatal("pids is nil") } + pidsLimit := int64(10) resources := specs.LinuxResources{ Pids: &specs.LinuxPids{ - Limit: 10, + Limit: &pidsLimit, }, } diff --git a/cgroup2/utils.go b/cgroup2/utils.go index 1f6ecb09..4bdeac90 100644 --- a/cgroup2/utils.go +++ b/cgroup2/utils.go @@ -221,9 +221,9 @@ func ToResources(spec *specs.LinuxResources) *Resources { } resources.HugeTlb = &hugeTlbUsage } - if pids := spec.Pids; pids != nil { + if pids := spec.Pids; pids != nil && pids.Limit != nil { resources.Pids = &Pids{ - Max: pids.Limit, + Max: *pids.Limit, } } if i := spec.BlockIO; i != nil { diff --git a/cmd/go.mod b/cmd/go.mod index 2c8baed5..5ae66a72 100644 --- a/cmd/go.mod +++ b/cmd/go.mod @@ -16,7 +16,7 @@ require ( github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect - github.com/opencontainers/runtime-spec v1.2.0 // indirect + github.com/opencontainers/runtime-spec v1.3.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sirupsen/logrus v1.9.3 // indirect golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect diff --git a/cmd/go.sum b/cmd/go.sum index 44a4bae3..1148b563 100644 --- a/cmd/go.sum +++ b/cmd/go.sum @@ -31,8 +31,8 @@ github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= +github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= diff --git a/go.mod b/go.mod index 47e5d3e6..a5c1c904 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/docker/go-units v0.5.0 github.com/godbus/dbus/v5 v5.1.0 github.com/moby/sys/userns v0.1.0 - github.com/opencontainers/runtime-spec v1.2.0 + github.com/opencontainers/runtime-spec v1.3.0 github.com/stretchr/testify v1.8.4 go.uber.org/goleak v1.1.12 golang.org/x/sys v0.27.0 diff --git a/go.sum b/go.sum index 33fcf55d..fcce1c62 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,8 @@ github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.3.0 h1:YZupQUdctfhpZy3TM39nN9Ika5CBWT5diQ8ibYCRkxg= +github.com/opencontainers/runtime-spec v1.3.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=