diff options
Diffstat (limited to '0102-netfilter-nf_tables-unbind_non-anonymous.patch')
-rw-r--r-- | 0102-netfilter-nf_tables-unbind_non-anonymous.patch | 30 |
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; |