[dpdk-dev] [PATCH] memalloc: fix potential underflow on mem size calculation

Anatoly Burakov anatoly.burakov at intel.com
Thu May 3 15:03:19 CEST 2018


If total memory is already bigger than max memory, an underflow
will occur on subtraction. Fix it by simply stopping whenever
we already have amount of memory that is bigger than maximum.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
Cc: anatoly.burakov at intel.com

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 lib/librte_eal/common/eal_common_memory.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c
index 4c943b0..a1e07d8 100644
--- a/lib/librte_eal/common/eal_common_memory.c
+++ b/lib/librte_eal/common/eal_common_memory.c
@@ -429,6 +429,9 @@ memseg_primary_init(void)
 				break;
 #endif
 
+			if (total_mem >= max_mem)
+				break;
+
 			max_type_mem = RTE_MIN(max_mem - total_mem,
 				(uint64_t)RTE_MAX_MEM_MB_PER_TYPE << 20);
 			max_segs = RTE_MAX_MEMSEG_PER_TYPE;
-- 
2.7.4


More information about the dev mailing list