From 7758d3fb028d686696a263851679a5d5a7665eae Mon Sep 17 00:00:00 2001 From: Kang Chen Date: Mon, 27 Sep 2021 14:49:16 +0800 Subject: [PATCH] libct/cg/sd/v2: Destroy: remove cgroups recursively Currently, we can create subcgroup in a rootless container with systemd cgroupv2 on centos8. But after the container exited, the container cgroup and its subcgroup will not be removed. Fix this by removing all directories recursively. Fixes: https://github.com/opencontainers/runc/issues/3225 Signed-off-by: Kang Chen --- libcontainer/cgroups/systemd/v2.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libcontainer/cgroups/systemd/v2.go b/libcontainer/cgroups/systemd/v2.go index 4af958f4fd5..49c0bfab623 100644 --- a/libcontainer/cgroups/systemd/v2.go +++ b/libcontainer/cgroups/systemd/v2.go @@ -3,7 +3,6 @@ package systemd import ( "fmt" "math" - "os" "path/filepath" "strconv" "strings" @@ -301,9 +300,10 @@ func (m *unifiedManager) Destroy() error { return err } - // XXX this is probably not needed, systemd should handle it - err := os.Remove(m.path) - if err != nil && !os.IsNotExist(err) { + // systemd 239 do not remove sub-cgroups. + err := m.fsMgr.Destroy() + // fsMgr.Destroy has handled ErrNotExist + if err != nil { return err }