diff --git a/probe/endpoint/procspy/background_reader_linux.go b/probe/endpoint/procspy/background_reader_linux.go index 96668c65f..7b28f78a9 100644 --- a/probe/endpoint/procspy/background_reader_linux.go +++ b/probe/endpoint/procspy/background_reader_linux.go @@ -3,6 +3,7 @@ package procspy import ( "bytes" "fmt" + "io" "math" "sync" "time" @@ -122,12 +123,11 @@ func (br *backgroundReader) loop() { } } -func (br *backgroundReader) getWalkedProcPid(buf *bytes.Buffer) map[uint64]*Proc { +func (br *backgroundReader) getWalkedProcPid(buf *bytes.Buffer) (map[uint64]*Proc, error) { br.mtx.Lock() defer br.mtx.Unlock() - reader := bytes.NewReader(br.readyBuf.Bytes()) - buf.ReadFrom(reader) + _, err := io.Copy(buf, br.readyBuf) - return br.readySockets + return br.readySockets, err } diff --git a/probe/endpoint/procspy/spy_linux.go b/probe/endpoint/procspy/spy_linux.go index 73ecddf33..9cd1e327e 100644 --- a/probe/endpoint/procspy/spy_linux.go +++ b/probe/endpoint/procspy/spy_linux.go @@ -50,7 +50,10 @@ func (s *linuxScanner) Connections(processes bool) (ConnIter, error) { var procs map[uint64]*Proc if processes { - procs = s.br.getWalkedProcPid(buf) + var err error + if procs, err = s.br.getWalkedProcPid(buf); err != nil { + return nil, err + } } if buf.Len() == 0 {