From: Ondřej Surý Date: Fri, 30 Sep 2022 08:52:14 +0000 (+0200) Subject: Don't stop timer from dns__nta_shutdown() X-Git-Tag: v9.19.6~18^2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=01f0f9dcdc4dc12739ce9787142b04c6880d8673;p=thirdparty%2Fbind9.git Don't stop timer from dns__nta_shutdown() The dns__nta_shutdown() could be run from different threads and it was accessing nta->timer unlocked. Don't check and stop the timer from dns__nta_shutdown() directly, but leave it for the async callback. --- diff --git a/lib/dns/nta.c b/lib/dns/nta.c index 1b80f1cbdb5..1d141ea27cb 100644 --- a/lib/dns/nta.c +++ b/lib/dns/nta.c @@ -645,7 +645,7 @@ dns__nta_shutdown_cb(dns__nta_t *nta) { REQUIRE(VALID_NTA(nta)); if (nta->timer) { - isc_timer_stop(nta->timer); /* This is superfluous */ + isc_timer_stop(nta->timer); isc_timer_destroy(&nta->timer); } @@ -656,10 +656,6 @@ static void dns__nta_shutdown(dns__nta_t *nta) { REQUIRE(VALID_NTA(nta)); - if (nta->timer != NULL) { - isc_timer_stop(nta->timer); - } - dns__nta_ref(nta); isc_async_run(nta->loop, (isc_job_cb)dns__nta_shutdown_cb, nta); }