Skip to content

Commit 4e5f985

Browse files
committed
netfilter: nf_tables: mark set as dead when unbinding anonymous set with timeout
jira LE-1907 cve CVE-2024-26643 Rebuild_History Non-Buildable kernel-5.14.0-427.18.1.el9_4 commit-author Pablo Neira Ayuso <pablo@netfilter.org> commit 552705a While the rhashtable set gc runs asynchronously, a race allows it to collect elements from anonymous sets with timeouts while it is being released from the commit path. Mingi Cho originally reported this issue in a different path in 6.1.x with a pipapo set with low timeouts which is not possible upstream since 7395dfa ("netfilter: nf_tables: use timestamp to check for set element timeout"). Fix this by setting on the dead flag for anonymous sets to skip async gc in this case. According to 08e4c8c ("netfilter: nf_tables: mark newset as dead on transaction abort"), Florian plans to accelerate abort path by releasing objects via workqueue, therefore, this sets on the dead flag for abort path too. Cc: stable@vger.kernel.org Fixes: 5f68718 ("netfilter: nf_tables: GC transaction API to avoid race with control plane") Reported-by: Mingi Cho <mgcho.minic@gmail.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> (cherry picked from commit 552705a) Signed-off-by: Jonathan Maple <jmaple@ciq.com>
1 parent 873291e commit 4e5f985

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

net/netfilter/nf_tables_api.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5169,6 +5169,7 @@ static void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set,
51695169

51705170
if (list_empty(&set->bindings) && nft_set_is_anonymous(set)) {
51715171
list_del_rcu(&set->list);
5172+
set->dead = 1;
51725173
if (event)
51735174
nf_tables_set_notify(ctx, set, NFT_MSG_DELSET,
51745175
GFP_KERNEL);

0 commit comments

Comments
 (0)