DEBUG: pools: make pool_check_pattern() take a pointer to the pool

This will be useful to report detailed bug traces.
This commit is contained in:
Willy Tarreau 2023-09-11 11:26:12 +02:00
parent e92e96b00f
commit f6bee5a50b
2 changed files with 5 additions and 4 deletions

View File

@ -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);

View File

@ -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);