From 7d09ba10cc873f3332dd3de5304fbcd6814d72eb Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Fri, 12 May 2023 12:57:50 -0700 Subject: [PATCH] libct: implement support for cgroup.kill Signed-off-by: Kir Kolyshkin --- libcontainer/init_linux.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libcontainer/init_linux.go b/libcontainer/init_linux.go index 9bf13d9d5..ed84ab59e 100644 --- a/libcontainer/init_linux.go +++ b/libcontainer/init_linux.go @@ -577,6 +577,17 @@ func setupRlimits(limits []configs.Rlimit, pid int) error { // signalAllProcesses freezes then iterates over all the processes inside the // manager's cgroups sending the signal s to them. func signalAllProcesses(m cgroups.Manager, s unix.Signal) error { + // Use cgroup.kill, if available. + if s == unix.SIGKILL { + if p := m.Path(""); p != "" { // Either cgroup v2 or hybrid. + err := cgroups.WriteFile(p, "cgroup.kill", "1") + if err == nil || !errors.Is(err, os.ErrNotExist) { + return err + } + // Fallback to old implementation. + } + } + if err := m.Freeze(configs.Frozen); err != nil { logrus.Warn(err) }