It is possible for rte_fbarray_find_next_n_free() to misreport that there are n contiguous open spots. If we need two contiguous entries for a hole, make sure that we're not indexing out-of-bounds in the fbarray.
The `arr->len - arr->count < n` condition in fbarray_find_n() is meant to safeguard against this, but we are not updating arr->count when inserting holes, so an undesired index may be returned. Signed-off-by: Jake Freeland <jf...@freebsd.org> --- lib/eal/freebsd/eal_memory.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/eal/freebsd/eal_memory.c b/lib/eal/freebsd/eal_memory.c index bcf5a6f986..bdbac0c3f3 100644 --- a/lib/eal/freebsd/eal_memory.c +++ b/lib/eal/freebsd/eal_memory.c @@ -171,6 +171,9 @@ rte_eal_hugepage_init(void) rte_fbarray_is_used(arr, ms_idx - 1)) ms_idx++; + if (ms_idx == (int)arr->len) + continue; + break; } if (msl_idx == RTE_MAX_MEMSEG_LISTS) { -- 2.47.2