From c2750a8864dc0c0aa31f779d3841487b62408b6a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 24 Aug 2017 21:49:09 +0100 Subject: [PATCH] [Minor] Add some limits for auto mempool adjustment --- src/libutil/mem_pool.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/libutil/mem_pool.c b/src/libutil/mem_pool.c index 9856e9198f..4a2f54b641 100644 --- a/src/libutil/mem_pool.c +++ b/src/libutil/mem_pool.c @@ -403,6 +403,7 @@ memory_pool_alloc_common (rspamd_mempool_t * pool, gsize size, if (cur == NULL || free < size) { /* Allocate new chain element */ if (pool->elt_len >= size + MEM_ALIGNMENT) { + pool->entry->elts[pool->entry->cur_elts].fragmentation += size; new = rspamd_mempool_chain_new (pool->elt_len + MEM_ALIGNMENT, pool_type); } @@ -632,6 +633,14 @@ rspamd_mempool_adjust_entry (struct rspamd_mempool_entry_point *e) e->cur_suggestion *= (1 + (((double)sel_pos) / e->cur_suggestion)) * 1.5; } + /* Some sane limits counting mempool architecture */ + if (e->cur_suggestion < 1024) { + e->cur_suggestion = 1024; + } + else if (e->cur_suggestion > 1024 * 1024 * 10) { + e->cur_suggestion = 1024 * 1024 * 10; + } + memset (e->elts, 0, sizeof (e->elts)); } -- 2.47.3