From: Libor Peltan Date: Sat, 27 Dec 2025 19:36:07 +0000 (+0100) Subject: timerDB dump: bugfix: proper RCU lock for iterating zoneDB X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c5c40f3187bc316d2f8e2f6cdbaabd16f295c81e;p=thirdparty%2Fknot-dns.git timerDB dump: bugfix: proper RCU lock for iterating zoneDB --- diff --git a/src/knot/server/server.c b/src/knot/server/server.c index 68106ce031..e8f8cc52e8 100644 --- a/src/knot/server/server.c +++ b/src/knot/server/server.c @@ -12,6 +12,7 @@ #include #include // OpenBSD #include +#include #include "libknot/libknot.h" #include "libknot/yparser/ypschema.h" @@ -977,7 +978,9 @@ static int timer_db_do_sync(struct dthread *thread) server_t *s = thread->data; while (thread->state & ThreadActive) { + rcu_read_lock(); int ret = zone_timers_write_all(&s->timerdb, s->zone_db); + rcu_read_unlock(); if (ret == KNOT_EOK) { log_info("updated persistent timer DB"); } else { diff --git a/src/knot/zone/timers.c b/src/knot/zone/timers.c index 72f4cdbe92..50dd25808b 100644 --- a/src/knot/zone/timers.c +++ b/src/knot/zone/timers.c @@ -8,8 +8,6 @@ #include "contrib/wire_ctx.h" #include "knot/zone/zonedb.h" -#include - /* * # Timer database * @@ -210,10 +208,8 @@ int zone_timers_write(knot_lmdb_db_t *db, const knot_dname_t *zone, static void txn_zone_write(zone_t *z, knot_lmdb_txn_t *txn) { - rcu_read_lock(); zone_timers_t *t = z->timers_static; txn_write_timers(txn, z->name, t); - rcu_read_unlock(); } int zone_timers_write_all(knot_lmdb_db_t *db, knot_zonedb_t *zonedb)