瀏覽代碼

Merge pull request #31263 from nalind/journal-doublefree

Synchronize the cursor returned by followJournal
Alexander Morozov 8 年之前
父節點
當前提交
b3e7f70137
共有 1 個文件被更改,包括 5 次插入0 次删除
  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
 }