From 219efebad4a0867f9de486e43d57046ea7b72e92 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Sun, 25 Feb 2024 06:39:50 -0800 Subject: [PATCH] wgengine: reduce critical section No need to hold wgLock while using the device to LookupPeer; that has its own mutex already. Updates #cleanup Signed-off-by: Brad Fitzpatrick Change-Id: Ib56049fcc7163cf5a2c2e7e12916f07b4f9d67cb --- wgengine/userspace.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/wgengine/userspace.go b/wgengine/userspace.go index dc92be1f9..93eb53bf2 100644 --- a/wgengine/userspace.go +++ b/wgengine/userspace.go @@ -1012,12 +1012,13 @@ var ErrEngineClosing = errors.New("engine closing; no status") func (e *userspaceEngine) getPeerStatusLite(pk key.NodePublic) (status ipnstate.PeerStatusLite, ok bool) { e.wgLock.Lock() - if e.wgdev == nil { - e.wgLock.Unlock() + dev := e.wgdev + e.wgLock.Unlock() + + if dev == nil { return status, false } - peer := e.wgdev.LookupPeer(pk.Raw32()) - e.wgLock.Unlock() + peer := dev.LookupPeer(pk.Raw32()) if peer == nil { return status, false }