From: Willy Tarreau Date: Thu, 15 Apr 2021 15:31:19 +0000 (+0200) Subject: BUG/MINOR: pools: maintain consistent ->allocated count on alloc failures X-Git-Tag: v2.4-dev17~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=932dd19cc3dd959b1937e90651a0fb3d7b46aa7c;p=thirdparty%2Fhaproxy.git BUG/MINOR: pools: maintain consistent ->allocated count on alloc failures When running with CONFIG_HAP_NO_GLOBAL_POOLS, it's theoritically possible to keep an incorrect count of allocated entries in a pool because the allocated counter was used as a cumulated counter of alloc calls instead of a number of currently allocated items (it's possible the meaning has changed over time). The only impact in this mode essentially is that "show pools" will report incorrect values. But this would only happen on limited pools, which is not even certain still exist. This was added by recent commit 0bae07592 ("MEDIUM: pools: add CONFIG_HAP_NO_GLOBAL_POOLS and CONFIG_HAP_GLOBAL_POOLS") so no backport is needed. --- diff --git a/src/pool.c b/src/pool.c index 3bcecd61df..0227f36690 100644 --- a/src/pool.c +++ b/src/pool.c @@ -181,7 +181,6 @@ void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail) void *ptr = NULL; if (limit && allocated >= limit) { - _HA_ATOMIC_INC(&pool->allocated); activity[tid].pool_fail++; return NULL; }