From: Vsevolod Stakhov Date: Thu, 24 Aug 2017 20:49:09 +0000 (+0100) Subject: [Minor] Add some limits for auto mempool adjustment X-Git-Tag: 1.7.0~702 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c2750a8864dc0c0aa31f779d3841487b62408b6a;p=thirdparty%2Frspamd.git [Minor] Add some limits for auto mempool adjustment --- 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)); }