From 6b87378634e1575cf590b7558f19b40b012849c2 Mon Sep 17 00:00:00 2001 From: Brielle Broder Date: Wed, 1 Aug 2018 09:43:47 -0700 Subject: [PATCH] New conditional for adding key/value pairs to maps. When adding MultiDeviceKeys and their values into MultiDevice maps, make sure the keys and values have not already been added. This ensures that preexisting key/value pairs are not overridden. PiperOrigin-RevId: 206942766 Change-Id: I9d85f38eb59ba59f0305e6614a52690608944981 --- pkg/sentry/device/device.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/sentry/device/device.go b/pkg/sentry/device/device.go index a5514c72f..21fee8f8a 100644 --- a/pkg/sentry/device/device.go +++ b/pkg/sentry/device/device.go @@ -183,6 +183,14 @@ func (m *MultiDevice) Load(key MultiDeviceKey, value uint64) bool { m.rcache = make(map[uint64]MultiDeviceKey) } + if val, exists := m.cache[key]; exists && val != value { + return false + } + if k, exists := m.rcache[value]; exists && k != key { + // Should never happen. + panic("MultiDevice's caches are inconsistent") + } + // Cache value at key. m.cache[key] = value