summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGhanan Gowripalan <ghanan@google.com>2020-12-01 21:32:36 -0800
committergVisor bot <gvisor-bot@google.com>2020-12-01 21:34:52 -0800
commit0c497394226b762dfd31b83bb33043d19073b0a4 (patch)
tree955ba3a7eac2637bee799da9352f38a06e6e1b55
parent93d29719cc016a8f52ae5e28c4a3bff2d9da0c3f (diff)
Correctly lock when listing neighbor entries
PiperOrigin-RevId: 345162450
-rw-r--r--pkg/tcpip/stack/neighbor_cache.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/pkg/tcpip/stack/neighbor_cache.go b/pkg/tcpip/stack/neighbor_cache.go
index 0d3f626cf..317f6871d 100644
--- a/pkg/tcpip/stack/neighbor_cache.go
+++ b/pkg/tcpip/stack/neighbor_cache.go
@@ -182,14 +182,15 @@ func (n *neighborCache) removeWaker(addr tcpip.Address, waker *sleep.Waker) {
// entries returns all entries in the neighbor cache.
func (n *neighborCache) entries() []NeighborEntry {
- entries := make([]NeighborEntry, 0, len(n.cache))
n.mu.RLock()
+ defer n.mu.RUnlock()
+
+ entries := make([]NeighborEntry, 0, len(n.cache))
for _, entry := range n.cache {
entry.mu.RLock()
entries = append(entries, entry.neigh)
entry.mu.RUnlock()
}
- n.mu.RUnlock()
return entries
}