Skip to content

Commit

Permalink
netfilter: nf_tables: do not remove elements if set backend implement…
Browse files Browse the repository at this point in the history
…s .abort

pipapo set backend maintains two copies of the datastructure, removing
the elements from the copy that is going to be discarded slows down
the abort path significantly, from several minutes to few seconds after
this patch.

Fixes: 212ed75 ("netfilter: nf_tables: integrate pipapo into commit protocol")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
  • Loading branch information
Pablo Neira Ayuso authored and Florian Westphal committed Oct 12, 2023
1 parent 50e4921 commit ebd032f
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion net/netfilter/nf_tables_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -10347,7 +10347,10 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action)
break;
}
te = (struct nft_trans_elem *)trans->data;
nft_setelem_remove(net, te->set, &te->elem);
if (!te->set->ops->abort ||
nft_setelem_is_catchall(te->set, &te->elem))
nft_setelem_remove(net, te->set, &te->elem);

if (!nft_setelem_is_catchall(te->set, &te->elem))
atomic_dec(&te->set->nelems);

Expand Down

0 comments on commit ebd032f

Please sign in to comment.