summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2021-02-15 12:27:08 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2021-02-15 18:17:06 +0100
commit00dfe9bebdf09c37827fb71db89c66a396f1a38c (patch)
treee18a650292f4f2152f17049fe78de39d7ee00b1f /net
parentnetfilter: nftables: add helper function to release one table (diff)
downloadlinux-00dfe9bebdf09c37827fb71db89c66a396f1a38c.tar.xz
linux-00dfe9bebdf09c37827fb71db89c66a396f1a38c.zip
netfilter: nftables: add helper function to release hooks of one single table
Add a function to release the hooks of one single table. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net')
-rw-r--r--net/netfilter/nf_tables_api.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index c2b89116dcef..dffb4f8ef17f 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -8988,15 +8988,20 @@ int __nft_release_basechain(struct nft_ctx *ctx)
}
EXPORT_SYMBOL_GPL(__nft_release_basechain);
+static void __nft_release_hook(struct net *net, struct nft_table *table)
+{
+ struct nft_chain *chain;
+
+ list_for_each_entry(chain, &table->chains, list)
+ nf_tables_unregister_hook(net, table, chain);
+}
+
static void __nft_release_hooks(struct net *net)
{
struct nft_table *table;
- struct nft_chain *chain;
- list_for_each_entry(table, &net->nft.tables, list) {
- list_for_each_entry(chain, &table->chains, list)
- nf_tables_unregister_hook(net, table, chain);
- }
+ list_for_each_entry(table, &net->nft.tables, list)
+ __nft_release_hook(net, table);
}
static void __nft_release_table(struct net *net, struct nft_table *table)