From 127f73a5c2d1816eb4f40d740940854414eae23c Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Fri, 11 Jul 2025 21:09:10 +0200 Subject: [PATCH] l3cfg: fix the interval of the ACD restart timer After ACD_WAIT_PROBING_EXTRA_TIME_MSEC has elapsed, _l3_acd_data_timeout_schedule_probing_restart() keeps rescheduling the timer with a zero interval, resulting in 100% CPU usage. This continues until the probe is destroyed after ACD_WAIT_PROBING_EXTRA_TIME2_MSEC. When computing the interval, we need to use (ACD_WAIT_PROBING_EXTRA_TIME_MSEC + ACD_WAIT_PROBING_EXTRA_TIME2_MSEC) as the expiry time. --- src/core/nm-l3cfg.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/nm-l3cfg.c b/src/core/nm-l3cfg.c index 1797cd0f93..54ca2cdd31 100644 --- a/src/core/nm-l3cfg.c +++ b/src/core/nm-l3cfg.c @@ -2322,7 +2322,8 @@ _l3_acd_data_timeout_schedule_probing_restart(AcdData *acd_data, gint64 now_msec nm_assert(acd_data->probing_timeout_msec > 0); nm_assert(acd_data->probing_timestamp_msec > 0); - expiry_msec = acd_data->probing_timestamp_msec + ACD_WAIT_PROBING_EXTRA_TIME_MSEC; + expiry_msec = acd_data->probing_timestamp_msec + ACD_WAIT_PROBING_EXTRA_TIME_MSEC + + ACD_WAIT_PROBING_EXTRA_TIME2_MSEC; timeout_msec = NM_MAX(0, expiry_msec - now_msec);