mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 20:10:23 +09:00
netfilter: nft_set_pipapo: .walk does not deal with generations
[ Upstream commit2b84e215f8] The .walk callback iterates over the current active set, but it might be useful to iterate over the next generation set. Use the generation mask to determine what set view (either current or next generation) is use for the walk iteration. Fixes:3c4287f620("nf_tables: Add set type for arbitrary concatenation of ranges") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4004f12aac
commit
45eb6944d0
@@ -1974,12 +1974,16 @@ static void nft_pipapo_walk(const struct nft_ctx *ctx, struct nft_set *set,
|
||||
struct nft_set_iter *iter)
|
||||
{
|
||||
struct nft_pipapo *priv = nft_set_priv(set);
|
||||
struct net *net = read_pnet(&set->net);
|
||||
struct nft_pipapo_match *m;
|
||||
struct nft_pipapo_field *f;
|
||||
int i, r;
|
||||
|
||||
rcu_read_lock();
|
||||
m = rcu_dereference(priv->match);
|
||||
if (iter->genmask == nft_genmask_cur(net))
|
||||
m = rcu_dereference(priv->match);
|
||||
else
|
||||
m = priv->clone;
|
||||
|
||||
if (unlikely(!m))
|
||||
goto out;
|
||||
|
||||
Reference in New Issue
Block a user