On Wed, May 18, 2022 at 08:15:31PM +0200, Florian Westphal wrote: [...] > @@ -389,7 +381,7 @@ void nft_meta_get_eval(const struct nft_expr *expr, > break; > #endif > case NFT_META_PRANDOM: > - *dest = nft_prandom_u32(); > + *dest = get_random_u32(); get_random_u32() uses a spinlock and it disables irq while my patch uses per-cpu and bh. spinlock ok, but disabling irq is not necessary. Also this function is called from control plane path by most users?