diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-11-12 16:11:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 16:11:30 +0100 |
commit | 39e3ec767ae045a5413d1cacb76359cc2e7c44ee (patch) | |
tree | 5ce3a330361acdea64f2b67bdde112928e5a6be9 /libpod/runtime_ctr.go | |
parent | 6c2503ca04d0224a22ae687337436a3ffeb6579d (diff) | |
parent | 0f637e09da85b2aaefa279cfb571b004a2cc6d59 (diff) | |
download | podman-39e3ec767ae045a5413d1cacb76359cc2e7c44ee.tar.gz podman-39e3ec767ae045a5413d1cacb76359cc2e7c44ee.tar.bz2 podman-39e3ec767ae045a5413d1cacb76359cc2e7c44ee.zip |
Merge pull request #8307 from mheon/fix_8221
Ensure we do not double-lock the same volume in create
Diffstat (limited to 'libpod/runtime_ctr.go')
-rw-r--r-- | libpod/runtime_ctr.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libpod/runtime_ctr.go b/libpod/runtime_ctr.go index c84268889..14b537ca2 100644 --- a/libpod/runtime_ctr.go +++ b/libpod/runtime_ctr.go @@ -345,8 +345,15 @@ func (r *Runtime) setupContainer(ctx context.Context, ctr *Container) (_ *Contai // Lock all named volumes we are adding ourself to, to ensure we can't // use a volume being removed. + volsLocked := make(map[string]bool) for _, namedVol := range ctrNamedVolumes { toLock := namedVol + // Ensure that we don't double-lock a named volume that is used + // more than once. + if volsLocked[namedVol.Name()] { + continue + } + volsLocked[namedVol.Name()] = true toLock.lock.Lock() defer toLock.lock.Unlock() } |