/* inet_ehash_secret must be set exactly once Instead of using a dedicated spinlock, we (ab)use inetsw_lock  */
void build_ehash_secret(void)
/* inet_ehash_secret must be set exactly once Instead of using a dedicated spinlock, we (ab)use inetsw_lock  */
void build_ehash_secret(void)
{
	u32 rnd;
	do {
		get_random_bytes(&rnd, sizeof(rnd));
	} while (rnd == 0);
	spin_lock_bh(&inetsw_lock);
	if (!inet_ehash_secret)
		inet_ehash_secret = rnd;
	spin_unlock_bh(&inetsw_lock);
}