Currently, the rte_rand() state is initialized with seed, and each rand state is initialized up until RTE_MAX_LCORE'th rand state. However, rand state also has one extra rand state reserved for non-EAL threads, which is not initialized. Fix it by initializing this extra state.
Fixes: 3f002f069612 ("eal: replace libc-based random generation with LFSR") Cc: mattias.ronnb...@ericsson.com Cc: sta...@dpdk.org Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> --- lib/eal/common/rte_random.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/eal/common/rte_random.c b/lib/eal/common/rte_random.c index 565f2401ce..e5691813a4 100644 --- a/lib/eal/common/rte_random.c +++ b/lib/eal/common/rte_random.c @@ -83,7 +83,7 @@ rte_srand(uint64_t seed) unsigned int lcore_id; /* add lcore_id to seed to avoid having the same sequence */ - for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) + for (lcore_id = 0; lcore_id < RTE_MAX_LCORE + 1; lcore_id++) __rte_srand_lfsr258(seed + lcore_id, &rand_states[lcore_id]); } -- 2.37.2