From 0af5cd204103a23b047bd4b8e4159f8ef5a1ef3c Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Fri, 27 Mar 2020 00:10:53 -0700 Subject: [PATCH 1/2] Nit: fix use of bufio.Scanner.Err The Err() method should be called after the Scan() loop, not inside it. Found by git grep -A3 -F '.Scan()' | grep Err Signed-off-by: Kir Kolyshkin --- libcontainer/cgroups/fs2/defaultpath.go | 6 +++--- libcontainer/intelrdt/intelrdt.go | 8 +++---- libcontainer/user/user.go | 28 +++++++++++-------------- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/libcontainer/cgroups/fs2/defaultpath.go b/libcontainer/cgroups/fs2/defaultpath.go index e84b33f2c..3d1fec336 100644 --- a/libcontainer/cgroups/fs2/defaultpath.go +++ b/libcontainer/cgroups/fs2/defaultpath.go @@ -80,9 +80,6 @@ func parseCgroupFromReader(r io.Reader) (string, error) { s = bufio.NewScanner(r) ) for s.Scan() { - if err := s.Err(); err != nil { - return "", err - } var ( text = s.Text() parts = strings.SplitN(text, ":", 3) @@ -95,5 +92,8 @@ func parseCgroupFromReader(r io.Reader) (string, error) { return parts[2], nil } } + if err := s.Err(); err != nil { + return "", err + } return "", errors.New("cgroup path not found") } diff --git a/libcontainer/intelrdt/intelrdt.go b/libcontainer/intelrdt/intelrdt.go index 30eca4dc8..c77de8845 100644 --- a/libcontainer/intelrdt/intelrdt.go +++ b/libcontainer/intelrdt/intelrdt.go @@ -310,10 +310,6 @@ func parseCpuInfoFile(path string) (bool, bool, error) { s := bufio.NewScanner(f) for s.Scan() { - if err := s.Err(); err != nil { - return false, false, err - } - line := s.Text() // Search "cat_l3" and "mba" flags in first "flags" line @@ -331,6 +327,10 @@ func parseCpuInfoFile(path string) (bool, bool, error) { return isCatFlagSet, isMbaFlagSet, nil } } + if err := s.Err(); err != nil { + return false, false, err + } + return isCatFlagSet, isMbaFlagSet, nil } diff --git a/libcontainer/user/user.go b/libcontainer/user/user.go index 7b912bbf8..de30982ba 100644 --- a/libcontainer/user/user.go +++ b/libcontainer/user/user.go @@ -162,10 +162,6 @@ func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) { ) for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - line := strings.TrimSpace(s.Text()) if line == "" { continue @@ -183,6 +179,9 @@ func ParsePasswdFilter(r io.Reader, filter func(User) bool) ([]User, error) { out = append(out, p) } } + if err := s.Err(); err != nil { + return nil, err + } return out, nil } @@ -221,10 +220,6 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) { ) for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - text := s.Text() if text == "" { continue @@ -242,6 +237,9 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) { out = append(out, p) } } + if err := s.Err(); err != nil { + return nil, err + } return out, nil } @@ -532,10 +530,6 @@ func ParseSubIDFilter(r io.Reader, filter func(SubID) bool) ([]SubID, error) { ) for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - line := strings.TrimSpace(s.Text()) if line == "" { continue @@ -549,6 +543,9 @@ func ParseSubIDFilter(r io.Reader, filter func(SubID) bool) ([]SubID, error) { out = append(out, p) } } + if err := s.Err(); err != nil { + return nil, err + } return out, nil } @@ -586,10 +583,6 @@ func ParseIDMapFilter(r io.Reader, filter func(IDMap) bool) ([]IDMap, error) { ) for s.Scan() { - if err := s.Err(); err != nil { - return nil, err - } - line := strings.TrimSpace(s.Text()) if line == "" { continue @@ -603,6 +596,9 @@ func ParseIDMapFilter(r io.Reader, filter func(IDMap) bool) ([]IDMap, error) { out = append(out, p) } } + if err := s.Err(); err != nil { + return nil, err + } return out, nil } From aab2c8ba52d9c66cda63017fd35c0b3918d1d592 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Fri, 27 Mar 2020 00:31:26 -0700 Subject: [PATCH 2/2] libcontainer/intelrdt: optimize parseCpuInfoFile The line we are parsing looks like this > flags : fpu vme de pse <...> so look for "flags" as a prefix, not substring. Signed-off-by: Kir Kolyshkin --- libcontainer/intelrdt/intelrdt.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libcontainer/intelrdt/intelrdt.go b/libcontainer/intelrdt/intelrdt.go index c77de8845..b19580f1c 100644 --- a/libcontainer/intelrdt/intelrdt.go +++ b/libcontainer/intelrdt/intelrdt.go @@ -313,7 +313,7 @@ func parseCpuInfoFile(path string) (bool, bool, error) { line := s.Text() // Search "cat_l3" and "mba" flags in first "flags" line - if strings.Contains(line, "flags") { + if strings.HasPrefix(line, "flags") { flags := strings.Split(line, " ") // "cat_l3" flag for CAT and "mba" flag for MBA for _, flag := range flags {