1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Fix a race in libcontainerd/pausemonitor_linux.go

Signed-off-by: Akihiro Suda <suda.akihiro@lab.ntt.co.jp>
This commit is contained in:
Akihiro Suda 2016-09-19 07:42:21 +00:00
parent 45a8f68026
commit 69f00a137c

View file

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