Skip to content

Commit 1fe182e

Browse files
committed
In overlay driver reset any state on setkey()
Signed-off-by: Alessandro Boch <aboch@docker.com>
1 parent d2141cd commit 1fe182e

2 files changed

Lines changed: 11 additions & 8 deletions

File tree

drivers/overlay/encryption.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -392,10 +392,11 @@ func (d *driver) secMapWalk(f func(string, []*spi) ([]*spi, bool)) error {
392392
}
393393

394394
func (d *driver) setKeys(keys []*key) error {
395-
if d.keys != nil {
396-
return types.ForbiddenErrorf("initial keys are already present")
397-
}
395+
// Accept the encryption keys and clear any stale encryption map
396+
d.Lock()
398397
d.keys = keys
398+
d.secMap = &encrMap{nodes: map[string][]*spi{}}
399+
d.Unlock()
399400
log.Debugf("Initial encryption keys: %v", d.keys)
400401
return nil
401402
}
@@ -433,10 +434,8 @@ func (d *driver) updateKeys(newKey, primary, pruneKey *key) error {
433434
if (newKey != nil && newIdx == -1) ||
434435
(primary != nil && priIdx == -1) ||
435436
(pruneKey != nil && delIdx == -1) {
436-
err := types.BadRequestErrorf("cannot find proper key indices while processing key update:"+
437+
return types.BadRequestErrorf("cannot find proper key indices while processing key update:"+
437438
"(newIdx,priIdx,delIdx):(%d, %d, %d)", newIdx, priIdx, delIdx)
438-
log.Warn(err)
439-
return err
440439
}
441440

442441
d.secMapWalk(func(rIPs string, spis []*spi) ([]*spi, bool) {

drivers/overlay/overlay.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,9 @@ func (d *driver) DiscoverNew(dType discoverapi.DiscoveryType, data interface{})
336336
}
337337
keys = append(keys, k)
338338
}
339-
d.setKeys(keys)
339+
if err := d.setKeys(keys); err != nil {
340+
logrus.Warn(err)
341+
}
340342
case discoverapi.EncryptionKeysUpdate:
341343
var newKey, delKey, priKey *key
342344
encrData, ok := data.(discoverapi.DriverEncryptionUpdate)
@@ -361,7 +363,9 @@ func (d *driver) DiscoverNew(dType discoverapi.DiscoveryType, data interface{})
361363
tag: uint32(encrData.PruneTag),
362364
}
363365
}
364-
d.updateKeys(newKey, priKey, delKey)
366+
if err := d.updateKeys(newKey, priKey, delKey); err != nil {
367+
logrus.Warn(err)
368+
}
365369
default:
366370
}
367371
return nil

0 commit comments

Comments
 (0)