From b357912211ef3b4daafdecba96de2cd3b816debb Mon Sep 17 00:00:00 2001 From: Darafei Praliaskouski Date: Wed, 27 May 2026 00:42:04 +0400 Subject: [PATCH] daemon/libnetwork/osl: stop draining after LinkSubscribe timeout The LinkSubscribe cleanup path is documented as bounded, but the timeout case only logged a warning and kept waiting for the update channel to close. If the subscription goroutine does not terminate, the deferred cleanup can still block forever after the warning. Return from the drain loop after logging the timeout so waitForIfUpped can finish its bounded cleanup path. Signed-off-by: Darafei Praliaskouski --- daemon/libnetwork/osl/interface_linux.go | 1 + 1 file changed, 1 insertion(+) diff --git a/daemon/libnetwork/osl/interface_linux.go b/daemon/libnetwork/osl/interface_linux.go index 3e17f3908e..c4dc18081c 100644 --- a/daemon/libnetwork/osl/interface_linux.go +++ b/daemon/libnetwork/osl/interface_linux.go @@ -455,6 +455,7 @@ func waitForIfUpped(ctx context.Context, ns netns.NsHandle, ifIndex int) (bool, } case <-drainTimerC: log.G(ctx).Warn("timeout while waiting for LinkSubscribe to terminate") + return } } }()