From: Willy Tarreau Date: Thu, 15 Apr 2021 14:43:18 +0000 (+0200) Subject: MINOR: pools: enable the fault injector in all allocation modes X-Git-Tag: v2.4-dev17~77 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53a7fe49aa0177cbc6f1709b4da268556ef36e09;p=thirdparty%2Fhaproxy.git MINOR: pools: enable the fault injector in all allocation modes The mem_should_fail() call enabled by DEBUG_FAIL_ALLOC used to be placed only in the no-cache version of the allocator. Now we can generalize it to all modes and remove the exclusive test on CONFIG_HAP_NO_GLOBAL_POOLS. --- diff --git a/include/haproxy/pool-t.h b/include/haproxy/pool-t.h index 4b185ef9ab..073fe3251a 100644 --- a/include/haproxy/pool-t.h +++ b/include/haproxy/pool-t.h @@ -46,7 +46,7 @@ * case we disable global pools. The global pools may still be enforced * using CONFIG_HAP_GLOBAL_POOLS though. */ -#if defined(USE_THREAD) && defined(HA_HAVE_FAST_MALLOC) && defined(CONFIG_HAP_POOLS) && !defined(CONFIG_HAP_GLOBAL_POOLS) +#if defined(USE_THREAD) && defined(HA_HAVE_FAST_MALLOC) && !defined(CONFIG_HAP_GLOBAL_POOLS) #define CONFIG_HAP_NO_GLOBAL_POOLS #endif diff --git a/src/pool.c b/src/pool.c index b493a933e6..59cc5083e9 100644 --- a/src/pool.c +++ b/src/pool.c @@ -156,6 +156,10 @@ void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail) int limit = pool->limit; void *ptr = NULL; +#ifdef DEBUG_FAIL_ALLOC + if (mem_should_fail(pool)) + return NULL; +#endif if (limit && allocated >= limit) { activity[tid].pool_fail++; return NULL; @@ -218,6 +222,10 @@ void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail) int limit = pool->limit; int allocated = pool->allocated, allocated_orig = allocated; +#ifdef DEBUG_FAIL_ALLOC + if (mem_should_fail(pool)) + return NULL; +#endif /* stop point */ avail += pool->used;