Fix layer store Get locking
Get was calling getReference without layerL held. This meant writes to
the references map could race. Such races are dangerous because they can
corrupt the map and crash the process.
Fixes #21616
Fixes #21674
Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
(cherry picked from commit 0538981c31
)
This commit is contained in:
parent
deb08a1012
commit
2e92a84fa8
1 changed files with 4 additions and 1 deletions
|
@ -334,7 +334,10 @@ func (ls *layerStore) get(l ChainID) *roLayer {
|
|||
}
|
||||
|
||||
func (ls *layerStore) Get(l ChainID) (Layer, error) {
|
||||
layer := ls.get(l)
|
||||
ls.layerL.Lock()
|
||||
defer ls.layerL.Unlock()
|
||||
|
||||
layer := ls.getWithoutLock(l)
|
||||
if layer == nil {
|
||||
return nil, ErrLayerDoesNotExist
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue