Message ID | 20231106100323.320284-1-pablo@netfilter.org |
---|---|
State | Not Applicable |
Delegated to: | Pablo Neira |
Headers | show |
Series | [nf] netfilter: nf_tables: remove catchall element in GC sync path | expand |
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index 3c1fd8283bf4..024a88b009a3 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -9692,10 +9692,12 @@ static struct nft_trans_gc *nft_trans_gc_catchall(struct nft_trans_gc *gc, nft_set_elem_dead(ext); dead_elem: - if (sync) + if (sync) { + nft_setelem_catchall_remove(gc->net, gc->set, catchall->elem); gc = nft_trans_gc_queue_sync(gc, GFP_ATOMIC); - else + } else { gc = nft_trans_gc_queue_async(gc, gc_seq, GFP_ATOMIC); + } if (!gc) return NULL;
The expired catchall element is not removed from GC sync path. This path holds mutex so just call nft_setelem_catchall_remove() before queueing the GC work. Fixes: 4a9e12ea7e70 ("netfilter: nft_set_pipapo: call nft_trans_gc_queue_sync() in catchall GC") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> --- net/netfilter/nf_tables_api.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)