MINOR: pools: disable redundant poisonning on pool_free()

The poisonning performed on pool_free() used to help a little bit with
use-after-free detection, but usually did more harm than good in that
it was never possible to perform post-mortem analysis on released
objects once poisonning was enabled on allocation. Now that there is
a dedicated DEBUG_POOL_INTEGRITY, let's get rid of this annoyance
which is not even documented in the management manual.
This commit is contained in:
Willy Tarreau 2022-02-23 11:45:09 +01:00
parent b61fccdc3f
commit af580f659c
2 changed files with 1 additions and 7 deletions

View File

@ -380,9 +380,7 @@ void pool_free(struct pool_head *pool, void *ptr)
Free an entry allocate from one of the pool_alloc() functions above
from pool <pool>. The object will be placed into the thread-local cache
if enabled, or in the shared pool if enabled, or will be released using
the operating system's default allocator. When memory poisonning is
enabled, the area will be overwritten before being released. This can
sometimes help detect use-after-free conditions. When a local cache is
the operating system's default allocator. When a local cache is
enabled, if the local cache size becomes larger than 75% of the maximum
size configured at build time, some objects will be evicted to the
shared pool. Such objects are taken first from the same pool, but if

View File

@ -654,10 +654,6 @@ void __pool_free(struct pool_head *pool, void *ptr)
/* we'll get late corruption if we refill to the wrong pool or double-free */
POOL_DEBUG_CHECK_MARK(pool, ptr);
POOL_DEBUG_RESET_MARK(pool, ptr);
if (unlikely(mem_poison_byte >= 0))
memset(ptr, mem_poison_byte, pool->size);
pool_put_to_cache(pool, ptr, caller);
}