diff --git a/include/haproxy/pool.h b/include/haproxy/pool.h index 98b832acf..506e43626 100644 --- a/include/haproxy/pool.h +++ b/include/haproxy/pool.h @@ -132,7 +132,7 @@ void pool_evict_from_local_cache(struct pool_head *pool, int full); void pool_evict_from_local_caches(void); void pool_put_to_cache(struct pool_head *pool, void *ptr, const void *caller); void pool_fill_pattern(struct pool_cache_head *pch, struct pool_cache_item *item, uint size); -void pool_check_pattern(struct pool_cache_head *pch, struct pool_cache_item *item, uint size, const void *caller); +void pool_check_pattern(struct pool_cache_head *pch, struct pool_head *pool, struct pool_cache_item *item, const void *caller); void pool_refill_local_from_shared(struct pool_head *pool, struct pool_cache_head *pch); void pool_put_to_shared_cache(struct pool_head *pool, struct pool_item *item); @@ -252,7 +252,7 @@ static inline void *pool_get_from_cache(struct pool_head *pool, const void *call item = LIST_PREV(&ph->list, typeof(item), by_pool); if (pool_debugging & POOL_DBG_INTEGRITY) - pool_check_pattern(ph, item, pool->size, caller); + pool_check_pattern(ph, pool, item, caller); } BUG_ON(&item->by_pool == &ph->list); diff --git a/src/pool.c b/src/pool.c index 243ff5d08..13af30008 100644 --- a/src/pool.c +++ b/src/pool.c @@ -481,9 +481,10 @@ void pool_fill_pattern(struct pool_cache_head *pch, struct pool_cache_item *item * must have been previously initialized using pool_fill_pattern(). If any * corruption is detected, the function provokes an immediate crash. */ -void pool_check_pattern(struct pool_cache_head *pch, struct pool_cache_item *item, uint size, const void *caller) +void pool_check_pattern(struct pool_cache_head *pch, struct pool_head *pool, struct pool_cache_item *item, const void *caller) { const ulong *ptr = (const ulong *)item; + uint size = pool->size; uint ofs; ulong u; @@ -526,7 +527,7 @@ static void pool_evict_last_items(struct pool_head *pool, struct pool_cache_head item = LIST_PREV(&ph->list, typeof(item), by_pool); BUG_ON(&item->by_pool == &ph->list); if (unlikely(pool_debugging & POOL_DBG_INTEGRITY)) - pool_check_pattern(ph, item, pool->size, caller); + pool_check_pattern(ph, pool, item, caller); LIST_DELETE(&item->by_pool); LIST_DELETE(&item->by_lru);