Sfoglia il codice sorgente

rootless: fix getCurrentOOMScoreAdj

`getCurrentOOMScoreAdj()` was broken because `strconv.Atoi()` was called
without trimming "\n".

Fix issue 40068: `rootless docker in kubernetes: "getting the final child's pid from
pipe caused \"EOF\": unknown"

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
(cherry picked from commit d6ddfb611815f52ac19c10c3af6a3f945b05105e)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Akihiro Suda 4 anni fa
parent
commit
d22dde8eb1
1 ha cambiato i file con 6 aggiunte e 1 eliminazioni
  1. 6 1
      rootless/specconv/specconv_linux.go

+ 6 - 1
rootless/specconv/specconv_linux.go

@@ -3,8 +3,10 @@ package specconv // import "github.com/docker/docker/rootless/specconv"
 import (
 	"io/ioutil"
 	"strconv"
+	"strings"
 
 	specs "github.com/opencontainers/runtime-spec/specs-go"
+	"github.com/sirupsen/logrus"
 )
 
 // ToRootless converts spec to be compatible with "rootless" runc.
@@ -19,10 +21,13 @@ func ToRootless(spec *specs.Spec, v2Controllers []string) error {
 func getCurrentOOMScoreAdj() int {
 	b, err := ioutil.ReadFile("/proc/self/oom_score_adj")
 	if err != nil {
+		logrus.WithError(err).Warn("failed to read /proc/self/oom_score_adj")
 		return 0
 	}
-	i, err := strconv.Atoi(string(b))
+	s := string(b)
+	i, err := strconv.Atoi(strings.TrimSpace(s))
 	if err != nil {
+		logrus.WithError(err).Warnf("failed to parse /proc/self/oom_score_adj (%q)", s)
 		return 0
 	}
 	return i