On 2024-12-18 17:35, Stephen Hemminger wrote:
On Tue, 17 Dec 2024 09:59:49 +0100 David Marchand <[email protected]> wrote:The RNG is documented as being seeded as part of EAL init. Move the initialisation (seeding) helper out of a constructor and call it explicitly from rte_eal_init() as it was done before commit 3f002f069612 ("eal: replace libc-based random generation with LFSR"). This also moves the unconditional lcore variable allocation out of a constructor. While at it, mark local symbol rand_state as static. Fixes: 29c39cd3d54d ("random: keep PRNG state in lcore variable") Cc: [email protected] Signed-off-by: David Marchand <[email protected]> Reviewed-by: Mattias Rönnblom <[email protected]> Acked-by: Anatoly Burakov <[email protected]>Probably need to add a check to rte_random() so it crashes if called before initialization, rather than returning an un-random number which could be a hidden long term bug.
If you do, do it either as a RTE_ASSERT() or an RTE_VERIFY() in the (lcore_id == LCORE_ID_ANY) path, since that is what will be taken.
Preferably, you should have as little as possible in rte_rand() fast path, because this function is used in packet processing.
That said, the "unrandom" number will always be 0, so it shouldn't go unnoticed for too long.

