diff --git a/p2p/enode/iter.go b/p2p/enode/iter.go
index 112b76d06a0e25d2e4a7d83598d0f77bdef026b8..664964f5340681e4001bfd1af40b9bf0edf8635c 100644
--- a/p2p/enode/iter.go
+++ b/p2p/enode/iter.go
@@ -88,6 +88,8 @@ func (it *sliceIter) Next() bool {
 }
 
 func (it *sliceIter) Node() *Node {
+	it.mu.Lock()
+	defer it.mu.Unlock()
 	if len(it.nodes) == 0 {
 		return nil
 	}