]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: pools: maintain consistent ->allocated count on alloc failures
authorWilly Tarreau <w@1wt.eu>
Thu, 15 Apr 2021 15:31:19 +0000 (17:31 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 19 Apr 2021 13:24:33 +0000 (15:24 +0200)
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.

src/pool.c

index 3bcecd61df9fb25215bdd6059ac46b83d4cc1d00..0227f36690a415d1cd92a17dd4e8feb39f4a9175 100644 (file)
@@ -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;
        }