From: Ondřej Surý Date: Thu, 9 Apr 2026 10:46:45 +0000 (+0200) Subject: Reclaim only what the new delegation needs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d772cda3c7480778739227381942c8e4ed1197f;p=thirdparty%2Fbind9.git Reclaim only what the new delegation needs delegdb_cleanup() was overwriting the caller-supplied 'requested' value with (hiwater - lowater), so every overmem cleanup tried to free the full watermark band regardless of how much memory the new delegation actually needed. Drop the override so the caller's size is used: we now walk the SIEVE only until we have reclaimed enough room for the new node, leaving unrelated entries in place. --- diff --git a/lib/dns/deleg.c b/lib/dns/deleg.c index df989c3b742..ae03ed1ddae 100644 --- a/lib/dns/deleg.c +++ b/lib/dns/deleg.c @@ -465,7 +465,6 @@ delegdb_cleanup(dns_qp_t *qp, dns_delegdb_t *delegdb, size_t requested) { if (!isc_mem_isovermem(delegdb->mctx)) { return; } - requested = delegdb->hiwater - delegdb->lowater; while (reclaimed < requested) { node = ISC_SIEVE_NEXT(delegdb->lru[isc_tid()], visited, link);