From: Ondřej Surý Date: Thu, 19 Mar 2026 02:42:08 +0000 (+0100) Subject: Fix data race on fctx->vresult in validated() X-Git-Tag: v9.21.21~24^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2bd8339095c99b4f0faea0f1bc39128c048c3aa;p=thirdparty%2Fbind9.git Fix data race on fctx->vresult in validated() Move the write to fctx->vresult after LOCK(&fctx->lock). The field was being set before acquiring the lock, but dns_resolver_logfetch() reads it under the same lock from another thread. --- diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index a708bd0f0b1..bf800ff067e 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -5626,7 +5626,6 @@ validated(void *arg) { addrinfo = valarg->addrinfo; message = val->message; - fctx->vresult = val->result; FCTXTRACE("received validation completion event"); @@ -5634,6 +5633,8 @@ validated(void *arg) { LOCK(&fctx->lock); + fctx->vresult = val->result; + ISC_LIST_UNLINK(fctx->validators, val, link); if (SHUTTINGDOWN(fctx)) {