From: Mark Andrews Date: Fri, 21 Aug 2020 09:51:59 +0000 (+1000) Subject: Defer read of zl->server and zl->reconfig until X-Git-Tag: v9.17.6~69^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9b445f33e27c704941e9fbc3a6af5f44922785bd;p=thirdparty%2Fbind9.git Defer read of zl->server and zl->reconfig until the reference counter has gone to zero and there is no longer a possibility of changes in other threads. --- diff --git a/bin/named/server.c b/bin/named/server.c index ec66cbcc9e2..bc6c1e7b3a5 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -9584,8 +9584,6 @@ static isc_result_t view_loaded(void *arg) { isc_result_t result; ns_zoneload_t *zl = (ns_zoneload_t *)arg; - named_server_t *server = zl->server; - bool reconfig = zl->reconfig; /* * Force zone maintenance. Do this after loading @@ -9596,6 +9594,9 @@ view_loaded(void *arg) { * know when all views are finished. */ if (isc_refcount_decrement(&zl->refs) == 1) { + named_server_t *server = zl->server; + bool reconfig = zl->reconfig; + isc_refcount_destroy(&zl->refs); isc_mem_put(server->mctx, zl, sizeof(*zl));