소스 검색

Fix a race in libcontainerd/pausemonitor_linux.go

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
Akihiro Suda 8 년 전
부모
커밋
69f00a137c
1개의 변경된 파일9개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      libcontainerd/pausemonitor_linux.go

+ 9 - 0
libcontainerd/pausemonitor_linux.go

@@ -1,11 +1,18 @@
 package libcontainerd
 
+import (
+	"sync"
+)
+
 // pauseMonitor is helper to get notifications from pause state changes.
 type pauseMonitor struct {
+	sync.Mutex
 	waiters map[string][]chan struct{}
 }
 
 func (m *pauseMonitor) handle(t string) {
+	m.Lock()
+	defer m.Unlock()
 	if m.waiters == nil {
 		return
 	}
@@ -20,6 +27,8 @@ func (m *pauseMonitor) handle(t string) {
 }
 
 func (m *pauseMonitor) append(t string, waiter chan struct{}) {
+	m.Lock()
+	defer m.Unlock()
 	if m.waiters == nil {
 		m.waiters = make(map[string][]chan struct{})
 	}