block alloc: add validations around cache_entry lifecyle
Add an option (controlled by an environment variable) perform extra validations on mem_pool allocated cache entries. When set: 1) Invalidate cache_entry memory when discarding cache_entry. 2) When discarding index_state struct, verify that all cache_entries were allocated from expected mem_pool. 3) When discarding mem_pools, invalidate mem_pool memory. This should provide extra checks that mem_pools and their allocated cache_entries are being used as expected. Signed-off-by: Jameson Miller <jamill@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
8e72d67529
commit
8616a2d0cb
@ -50,7 +50,7 @@ void mem_pool_init(struct mem_pool **mem_pool, size_t initial_size)
|
||||
*mem_pool = pool;
|
||||
}
|
||||
|
||||
void mem_pool_discard(struct mem_pool *mem_pool)
|
||||
void mem_pool_discard(struct mem_pool *mem_pool, int invalidate_memory)
|
||||
{
|
||||
struct mp_block *block, *block_to_free;
|
||||
|
||||
@ -59,6 +59,10 @@ void mem_pool_discard(struct mem_pool *mem_pool)
|
||||
{
|
||||
block_to_free = block;
|
||||
block = block->next_block;
|
||||
|
||||
if (invalidate_memory)
|
||||
memset(block_to_free->space, 0xDD, ((char *)block_to_free->end) - ((char *)block_to_free->space));
|
||||
|
||||
free(block_to_free);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user