]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: nf_tables: unbind non-anonymous set if rule construction fails
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 5 Jul 2023 16:56:23 +0000 (18:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Aug 2023 09:33:42 +0000 (11:33 +0200)
3e70489721b6c870252c9082c496703677240f53 ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/netfilter/nf_tables_api.c

index 624de5f2555731958570370fa2ba7bf99a5e1a16..b016ae68d9db8656fb5457f640589d8bfa0537d8 100644 (file)
@@ -3461,6 +3461,8 @@ void nf_tables_deactivate_set(const struct nft_ctx *ctx, struct nft_set *set,
                nft_set_trans_unbind(ctx, set);
                if (set->flags & NFT_SET_ANONYMOUS)
                        nft_deactivate_next(ctx->net, set);
+               else
+                       list_del_rcu(&binding->list);
 
                set->use--;
                break;