From: Aram Sargsyan Date: Mon, 13 Feb 2023 14:47:09 +0000 (+0000) Subject: Fix RPZ reference counting error on shutdown X-Git-Tag: v9.19.11~69^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=afbe63565fa444f13359425554c871cc924d9547;p=thirdparty%2Fbind9.git Fix RPZ reference counting error on shutdown A dns_rpz_unref_rpzs() call is missing when taking the 'goto unlock;' path on shutdown, in order to compensate for the earlier dns_rpz_ref_rpzs() call. Move the dns_rpz_ref_rpzs() call after the shutdown check. --- diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index 70e341a153e..8dc62d29e29 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -1945,8 +1945,6 @@ dns__rpz_timer_cb(void *arg) { REQUIRE(rpz->updb == NULL); REQUIRE(rpz->updbversion == NULL); - dns_rpz_ref_rpzs(rpz->rpzs); - LOCK(&rpz->rpzs->maint_lock); if (rpz->rpzs->shuttingdown) { @@ -1966,6 +1964,7 @@ dns__rpz_timer_cb(void *arg) { isc_log_write(dns_lctx, DNS_LOGCATEGORY_GENERAL, DNS_LOGMODULE_MASTER, ISC_LOG_INFO, "rpz: %s: reload start", domain); + dns_rpz_ref_rpzs(rpz->rpzs); isc_work_enqueue(rpz->loop, update_rpz_cb, update_rpz_done_cb, rpz); isc_timer_destroy(&rpz->updatetimer);