]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: nf_tables: use rcu chain hook list iterator from netlink dump path
authorPablo Neira Ayuso <pablo@netfilter.org>
Tue, 17 Sep 2024 21:07:46 +0000 (23:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2024 14:38:26 +0000 (16:38 +0200)
[ Upstream commit 4ffcf5ca81c3b83180473eb0d3c010a1a7c6c4de ]

Lockless iteration over hook list is possible from netlink dump path,
use rcu variant to iterate over the hook list as is done with flowtable
hooks.

Fixes: b9703ed44ffb ("netfilter: nf_tables: support for adding new devices to an existing netdev chain")
Reported-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/netfilter/nf_tables_api.c

index 4ceb3e0798dee4f0efe7b30ef6ec4c55d253411b..02a8b863a151bca5f156bac25593bd95c78b93de 100644 (file)
@@ -1847,7 +1847,7 @@ static int nft_dump_basechain_hook(struct sk_buff *skb, int family,
                if (!hook_list)
                        hook_list = &basechain->hook_list;
 
-               list_for_each_entry(hook, hook_list, list) {
+               list_for_each_entry_rcu(hook, hook_list, list) {
                        if (!first)
                                first = hook;