Explorar el Código

Merge pull request #31263 from nalind/journal-doublefree

Synchronize the cursor returned by followJournal
Alexander Morozov hace 8 años
padre
commit
b3e7f70137
Se han modificado 1 ficheros con 5 adiciones y 0 borrados
  1. 5 0
      daemon/logger/journald/read.go

+ 5 - 0
daemon/logger/journald/read.go

@@ -249,6 +249,8 @@ func (s *journald) followJournal(logWatcher *logger.LogWatcher, config logger.Re
 	s.readers.readers[logWatcher] = logWatcher
 	s.readers.mu.Unlock()
 
+	newCursor := make(chan *C.char)
+
 	go func() {
 		for {
 			// Keep copying journal data out until we're notified to stop
@@ -276,6 +278,7 @@ func (s *journald) followJournal(logWatcher *logger.LogWatcher, config logger.Re
 		delete(s.readers.readers, logWatcher)
 		s.readers.mu.Unlock()
 		close(logWatcher.Msg)
+		newCursor <- cursor
 	}()
 
 	// Wait until we're told to stop.
@@ -285,6 +288,8 @@ func (s *journald) followJournal(logWatcher *logger.LogWatcher, config logger.Re
 		C.close(pfd[1])
 	}
 
+	cursor = <-newCursor
+
 	return cursor
 }