Jelajahi Sumber

Merge pull request #26695 from AkihiroSuda/fix-pause-race

Fix a race in libcontainerd/pausemonitor_linux.go
Brian Goff 8 tahun lalu
induk
melakukan
622faab3f6
1 mengubah file dengan 9 tambahan dan 0 penghapusan
  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{})
 	}