OSDN Git Service

netfilter: arp_tables: add pre_exit hook for table unregister
authorFlorian Westphal <fw@strlen.de>
Wed, 7 Apr 2021 19:43:40 +0000 (21:43 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sat, 10 Apr 2021 19:18:24 +0000 (21:18 +0200)
commitd163a925ebbc6eb5b562b0f1d72c7e817aa75c40
treee8cd49d2df51c8418824ec07a858953c783454a4
parent7ee3c61dcd28bf6e290e06ad382f13511dc790e9
netfilter: arp_tables: add pre_exit hook for table unregister

Same problem that also existed in iptables/ip(6)tables, when
arptable_filter is removed there is no longer a wait period before the
table/ruleset is free'd.

Unregister the hook in pre_exit, then remove the table in the exit
function.
This used to work correctly because the old nf_hook_unregister API
did unconditional synchronize_net.

The per-net hook unregister function uses call_rcu instead.

Fixes: b9e69e127397 ("netfilter: xtables: don't hook tables by default")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/linux/netfilter_arp/arp_tables.h
net/ipv4/netfilter/arp_tables.c
net/ipv4/netfilter/arptable_filter.c