]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Update 'init_count' atomically to silence tsan errors.
authorMark Andrews <marka@isc.org>
Thu, 20 Aug 2020 01:24:05 +0000 (11:24 +1000)
committerMark Andrews <marka@isc.org>
Wed, 2 Sep 2020 09:35:43 +0000 (09:35 +0000)
lib/dns/rbtdb.c

index baf764174a494296f5d6f15363ca94834b3ce5d4..88c39bf714c89bb5b2d590a23e38b9b2c59afdb3 100644 (file)
@@ -6839,7 +6839,7 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
                newheader->attributes |= RDATASET_ATTR_ZEROTTL;
        newheader->noqname = NULL;
        newheader->closest = NULL;
-       newheader->count = init_count++;
+       newheader->count = isc_atomic_xadd((int32_t*)&init_count, 1);
        newheader->trust = rdataset->trust;
        newheader->additional_auth = NULL;
        newheader->additional_glue = NULL;
@@ -7035,7 +7035,7 @@ subtractrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
        newheader->trust = 0;
        newheader->noqname = NULL;
        newheader->closest = NULL;
-       newheader->count = init_count++;
+       newheader->count = isc_atomic_xadd((int32_t*)&init_count, 1);
        newheader->additional_auth = NULL;
        newheader->additional_glue = NULL;
        newheader->last_used = 0;
@@ -7481,7 +7481,7 @@ loading_addrdataset(void *arg, dns_name_t *name, dns_rdataset_t *rdataset) {
        newheader->serial = 1;
        newheader->noqname = NULL;
        newheader->closest = NULL;
-       newheader->count = init_count++;
+       newheader->count = isc_atomic_xadd((int32_t*)&init_count, 1);
        newheader->additional_auth = NULL;
        newheader->additional_glue = NULL;
        newheader->last_used = 0;