mem: fix potential underflow on mem size calculation

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")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
Anatoly Burakov 2018-05-03 14:03:19 +01:00 committed by Thomas Monjalon
parent 7785c5588d
commit d2bd796d7b

View File

@ -458,6 +458,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;