mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
netfilter: nf_tables: do not remove elements if set backend implements .abort
commitebd032fa88upstream. 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:212ed75dc5("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d6ba6de49c
commit
2ec18541f3
@@ -10336,7 +10336,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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user