From 88256d646d61f634f190add53e8226b5da392f1e Mon Sep 17 00:00:00 2001 From: Andrei Vagin Date: Thu, 23 Mar 2017 01:43:39 +0300 Subject: [PATCH] Don't try to read freezer.state from the current directory If we try to pause a container on the system without freezer cgroups, we can found that runc tries to open ./freezer.state. It is obviously wrong. $ ./runc pause test no such directory for freezer.state $ echo FROZEN > freezer.state $ ./runc pause test container not running or created: paused Signed-off-by: Andrei Vagin --- libcontainer/container_linux.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go index 28dff866..cd9235d4 100644 --- a/libcontainer/container_linux.go +++ b/libcontainer/container_linux.go @@ -1284,7 +1284,12 @@ func (c *linuxContainer) runType() (Status, error) { } func (c *linuxContainer) isPaused() (bool, error) { - data, err := ioutil.ReadFile(filepath.Join(c.cgroupManager.GetPaths()["freezer"], "freezer.state")) + fcg := c.cgroupManager.GetPaths()["freezer"] + if fcg == "" { + // A container doesn't have a freezer cgroup + return false, nil + } + data, err := ioutil.ReadFile(filepath.Join(fcg, "freezer.state")) if err != nil { // If freezer cgroup is not mounted, the container would just be not paused. if os.IsNotExist(err) {