summarylogtreecommitdiffstats
path: root/0102-netfilter-nf_tables-unbind_non-anonymous.patch
diff options
context:
space:
mode:
Diffstat (limited to '0102-netfilter-nf_tables-unbind_non-anonymous.patch')
-rw-r--r--0102-netfilter-nf_tables-unbind_non-anonymous.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/0102-netfilter-nf_tables-unbind_non-anonymous.patch b/0102-netfilter-nf_tables-unbind_non-anonymous.patch
new file mode 100644
index 000000000000..77b52a94aba9
--- /dev/null
+++ b/0102-netfilter-nf_tables-unbind_non-anonymous.patch
@@ -0,0 +1,30 @@
+From 50c597f3cc8dc4de0f0b6153a0ff1bd0b2dc6f56 Mon Sep 17 00:00:00 2001
+From: Pablo Neira Ayuso <pablo@netfilter.org>
+Date: Mon, 26 Jun 2023 00:42:18 +0200
+Subject: [PATCH] netfilter: nf_tables: unbind non-anonymous set if rule
+ construction fails
+
+Otherwise a dangling reference to a rule object that is gone remains
+in the set binding list.
+
+Fixes: 26b5a5712eb8 ("netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound set/chain")
+Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
+(cherry picked from commit 3e70489721b6c870252c9082c496703677240f53)
+For: https://bugs.archlinux.org/task/78908
+---
+ net/netfilter/nf_tables_api.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
+index 4c7937fd803f9f..1d64c163076a12 100644
+--- a/net/netfilter/nf_tables_api.c
++++ b/net/netfilter/nf_tables_api.c
+@@ -5343,6 +5343,8 @@ void nf_tables_deactivate_set(const struct nft_ctx *ctx, struct nft_set *set,
+ nft_set_trans_unbind(ctx, set);
+ if (nft_set_is_anonymous(set))
+ nft_deactivate_next(ctx->net, set);
++ else
++ list_del_rcu(&binding->list);
+
+ set->use--;
+ break;