]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
netfilter: use get_random_u32 instead of prandom
authorFlorian Westphal <fw@strlen.de>
Wed, 18 May 2022 18:15:31 +0000 (20:15 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 26 Aug 2022 08:53:46 +0000 (10:53 +0200)
commit2ffa5bc389e526765637814fb4c44978d04b2e5e
treef6277de92110eaad820607141b250c1eff391ed0
parent780181c3f0ad7df3428a8e310f9c090132334cde
netfilter: use get_random_u32 instead of prandom

BugLink: https://bugs.launchpad.net/bugs/1986718
[ Upstream commit b1fd94e704571f98b21027340eecf821b2bdffba ]

bh might occur while updating per-cpu rnd_state from user context,
ie. local_out path.

BUG: using smp_processor_id() in preemptible [00000000] code: nginx/2725
caller is nft_ng_random_eval+0x24/0x54 [nft_numgen]
Call Trace:
 check_preemption_disabled+0xde/0xe0
 nft_ng_random_eval+0x24/0x54 [nft_numgen]

Use the random driver instead, this also avoids need for local prandom
state. Moreover, prandom now uses the random driver since d4150779e60f
("random32: use real rng for non-deterministic randomness").

Based on earlier patch from Pablo Neira.

Fixes: 6b2faee0ca91 ("netfilter: nft_meta: place prandom handling in a helper")
Fixes: 978d8f9055c3 ("netfilter: nft_numgen: add map lookups for numgen random operations")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
net/netfilter/nft_meta.c
net/netfilter/nft_numgen.c