]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Add missing initialisations
authorMark Andrews <marka@isc.org>
Wed, 26 May 2021 07:55:43 +0000 (17:55 +1000)
committerMark Andrews <marka@isc.org>
Wed, 26 May 2021 08:15:08 +0000 (08:15 +0000)
configuring with --enable-mutex-atomics flagged these incorrectly
initialised variables on systems where pthread_mutex_init doesn't
just zero out the structure.

bin/named/controlconf.c
lib/dns/rbtdb.c
lib/dns/xfrin.c
lib/dns/zone.c
lib/isc/app.c
lib/isc/mem.c
lib/isc/netmgr/netmgr.c
lib/isc/stats.c
lib/isc/task.c
lib/ns/client.c

index 69a4cfad703b465bfce0e86274eeb5976f182056..6139799fb876f60b64d493d9da0ef06b6d00bf7f 100644 (file)
@@ -1466,6 +1466,7 @@ named_controls_create(named_server_t *server, named_controls_t **ctrlsp) {
 
        ISC_LIST_INIT(controls->listeners);
 
+       atomic_init(&controls->shuttingdown, false);
        isc_mutex_init(&controls->symtab_lock);
        LOCK(&controls->symtab_lock);
        result = isccc_cc_createsymtab(&controls->symtab);
index c16e811babdef6fd1e8160cee7828c23aa47f6f2..98f88e29de91d5cbeb008a2bf3efcbd59da414bf 100644 (file)
@@ -766,7 +766,7 @@ static char FILE_VERSION[32] = "\0";
  *      that indicates that the database does not implement cyclic
  *      processing.
  */
-static atomic_uint_fast32_t init_count;
+static atomic_uint_fast32_t init_count = ATOMIC_VAR_INIT(0);
 
 /*
  * Locking
index 426aa17fa1a3419d4ad99794313544cd1db7efac..0d2930506bbbf716bda4acdf2b10446a0ee15245 100644 (file)
@@ -879,6 +879,12 @@ xfrin_create(isc_mem_t *mctx, dns_zone_t *zone, dns_db_t *db, isc_nm_t *netmgr,
        dns_zone_iattach(zone, &xfr->zone);
        dns_name_init(&xfr->name, NULL);
 
+       isc_refcount_init(&xfr->connects, 0);
+       isc_refcount_init(&xfr->sends, 0);
+       isc_refcount_init(&xfr->recvs, 0);
+
+       atomic_init(&xfr->shuttingdown, false);
+
        if (db != NULL) {
                dns_db_attach(db, &xfr->db);
        }
index 9084a434b98dae705c3b2af4ce906031ae821c2c..642434361375dd6ae94a40a18d5e753f2ea34015 100644 (file)
@@ -18132,6 +18132,9 @@ dns_zonemgr_create(isc_mem_t *mctx, isc_taskmgr_t *taskmgr,
        ISC_LIST_INIT(zmgr->waiting_for_xfrin);
        ISC_LIST_INIT(zmgr->xfrin_in_progress);
        memset(zmgr->unreachable, 0, sizeof(zmgr->unreachable));
+       for (size_t i = 0; i < UNREACH_CACHE_SIZE; i++) {
+               atomic_init(&zmgr->unreachable[i].expire, 0);
+       }
        isc_rwlock_init(&zmgr->rwlock, 0, 0);
 
        zmgr->transfersin = 10;
index 04f471243479c98889b7df81650be0f7e6e828d2..6a9e40acdf4946f9f4365a418b97e7fe5dc83e6e 100644 (file)
@@ -50,7 +50,7 @@
  */
 
 static isc_thread_t blockedthread;
-static atomic_bool is_running;
+static atomic_bool is_running = ATOMIC_VAR_INIT(0);
 
 #ifdef WIN32
 /*
index 740bffcc15371930c7e11319a16cd33a0225ecd4..d129809fa772169cda014ee78bb670716cd4d0c7 100644 (file)
@@ -491,7 +491,15 @@ mem_create(isc_mem_t **ctxp, unsigned int flags) {
        atomic_init(&ctx->maxinuse, 0);
        atomic_init(&ctx->malloced, sizeof(*ctx));
        atomic_init(&ctx->maxmalloced, sizeof(*ctx));
+       atomic_init(&ctx->hi_water, 0);
+       atomic_init(&ctx->lo_water, 0);
+       atomic_init(&ctx->hi_called, false);
+       atomic_init(&ctx->is_overmem, false);
 
+       for (size_t i = 0; i < STATS_BUCKETS + 1; i++) {
+               atomic_init(&ctx->stats[i].gets, 0);
+               atomic_init(&ctx->stats[i].totalgets, 0);
+       }
        ISC_LIST_INIT(ctx->pools);
 
 #if ISC_MEM_TRACKLINES
@@ -1211,6 +1219,7 @@ isc_mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp) {
        atomic_init(&mpctx->freecount, 0);
        atomic_init(&mpctx->freemax, 1);
        atomic_init(&mpctx->fillcount, 1);
+       atomic_init(&mpctx->gets, 0);
 
        *mpctxp = (isc_mempool_t *)mpctx;
 
index 479e11e4ab133d25de49bda38d233c30d765efaf..9692be6a4bb5e844b4f86d71223e5a2695a3d512 100644 (file)
@@ -278,6 +278,14 @@ isc__netmgr_create(isc_mem_t *mctx, uint32_t workers, isc_nm_t **netmgrp) {
        atomic_init(&mgr->maxudp, 0);
        atomic_init(&mgr->interlocked, ISC_NETMGR_NON_INTERLOCKED);
        atomic_init(&mgr->workers_paused, 0);
+       atomic_init(&mgr->paused, false);
+       atomic_init(&mgr->closing, false);
+       atomic_init(&mgr->idle, false);
+       atomic_init(&mgr->keepalive, false);
+       atomic_init(&mgr->recv_tcp_buffer_size, 0);
+       atomic_init(&mgr->send_tcp_buffer_size, 0);
+       atomic_init(&mgr->recv_udp_buffer_size, 0);
+       atomic_init(&mgr->send_udp_buffer_size, 0);
 
 #ifdef NETMGR_TRACE
        ISC_LIST_INIT(mgr->active_sockets);
@@ -1554,8 +1562,16 @@ isc___nmsocket_init(isc_nmsocket_t *sock, isc_nm_t *mgr, isc_nmsocket_type type,
        atomic_init(&sock->sequential, false);
        atomic_init(&sock->readpaused, false);
        atomic_init(&sock->closing, false);
-
-       atomic_store(&sock->active_child_connections, 0);
+       atomic_init(&sock->listening, 0);
+       atomic_init(&sock->closed, 0);
+       atomic_init(&sock->destroying, 0);
+       atomic_init(&sock->ah, 0);
+       atomic_init(&sock->client, 0);
+       atomic_init(&sock->connecting, false);
+       atomic_init(&sock->keepalive, false);
+       atomic_init(&sock->connected, false);
+
+       atomic_init(&sock->active_child_connections, 0);
 
        isc__nm_http_initsocket(sock);
 
index 7fee22e29aebfb402a61a764bb20c07c92b0ceec..6084310a910e0064f74255ed7cd54109a5395b28 100644 (file)
@@ -52,7 +52,9 @@ create_stats(isc_mem_t *mctx, int ncounters, isc_stats_t **statsp) {
        counters_alloc_size = sizeof(isc__atomic_statcounter_t) * ncounters;
        stats->counters = isc_mem_get(mctx, counters_alloc_size);
        isc_refcount_init(&stats->references, 1);
-       memset(stats->counters, 0, counters_alloc_size);
+       for (int i = 0; i < ncounters; i++) {
+               atomic_init(&stats->counters[i], 0);
+       }
        stats->mctx = NULL;
        isc_mem_attach(mctx, &stats->mctx);
        stats->ncounters = ncounters;
index 937164e93f563713ddaeb817070e3304ac86e856..c85ac761974c888323bcc303da17c48d218a9353 100644 (file)
@@ -960,7 +960,8 @@ isc__taskmgr_create(isc_mem_t *mctx, unsigned int default_quantum, isc_nm_t *nm,
        INIT_LIST(manager->tasks);
        atomic_init(&manager->exiting, false);
        atomic_init(&manager->mode, isc_taskmgrmode_normal);
-       atomic_store_relaxed(&manager->exclusive_req, false);
+       atomic_init(&manager->exclusive_req, false);
+       atomic_init(&manager->tasks_count, 0);
 
        isc_mem_attach(mctx, &manager->mctx);
 
index ba3c3116731da84b82623afb7156c5e68bf1ebc9..24e244a3d2385fdbf021023ac4643a4e99767684 100644 (file)
 #endif /* ifndef NS_CLIENT_DROPPORT */
 
 #if defined(_WIN32) && !defined(_WIN64)
-LIBNS_EXTERNAL_DATA atomic_uint_fast32_t ns_client_requests;
+LIBNS_EXTERNAL_DATA atomic_uint_fast32_t ns_client_requests =
+       ATOMIC_VAR_INIT(0);
 #else  /* if defined(_WIN32) && !defined(_WIN64) */
-LIBNS_EXTERNAL_DATA atomic_uint_fast64_t ns_client_requests;
+LIBNS_EXTERNAL_DATA atomic_uint_fast64_t ns_client_requests =
+       ATOMIC_VAR_INIT(0);
 #endif /* if defined(_WIN32) && !defined(_WIN64) */
 
 static void