netfilter: nf_tables: revert do not remove elements if set backend implements .abort
commitf86fb94011upstream. nf_tables_abort_release() path calls nft_set_elem_destroy() for NFT_MSG_NEWSETELEM which releases the element, however, a reference to the element still remains in the working copy. Fixes:ebd032fa88("netfilter: nf_tables: do not remove elements if set backend implements .abort") 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
c2eaa8319f
commit
e1512ff1ec
@@ -9931,10 +9931,7 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
te = (struct nft_trans_elem *)trans->data;
|
te = (struct nft_trans_elem *)trans->data;
|
||||||
if (!te->set->ops->abort ||
|
nft_setelem_remove(net, te->set, &te->elem);
|
||||||
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))
|
if (!nft_setelem_is_catchall(te->set, &te->elem))
|
||||||
atomic_dec(&te->set->nelems);
|
atomic_dec(&te->set->nelems);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user