These pernet_operations use nf_log_set() and nf_log_unset()
in their methods:

        nf_log_bridge_net_ops
        nf_log_arp_net_ops
        nf_log_ipv4_net_ops
        nf_log_ipv6_net_ops
        nf_log_netdev_net_ops

Nobody can send such a packet to a net before it's became
registered, nobody can send a packet after all netdevices
are unregistered. So, these pernet_operations are able
to be marked as async.

Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
---
 net/bridge/netfilter/nf_log_bridge.c |    1 +
 net/ipv4/netfilter/nf_log_arp.c      |    1 +
 net/ipv4/netfilter/nf_log_ipv4.c     |    1 +
 net/ipv6/netfilter/nf_log_ipv6.c     |    1 +
 net/netfilter/nf_log_netdev.c        |    1 +
 5 files changed, 5 insertions(+)

diff --git a/net/bridge/netfilter/nf_log_bridge.c 
b/net/bridge/netfilter/nf_log_bridge.c
index bd2b3c78f59b..91bfc2ac055a 100644
--- a/net/bridge/netfilter/nf_log_bridge.c
+++ b/net/bridge/netfilter/nf_log_bridge.c
@@ -48,6 +48,7 @@ static void __net_exit nf_log_bridge_net_exit(struct net *net)
 static struct pernet_operations nf_log_bridge_net_ops = {
        .init = nf_log_bridge_net_init,
        .exit = nf_log_bridge_net_exit,
+       .async = true,
 };
 
 static int __init nf_log_bridge_init(void)
diff --git a/net/ipv4/netfilter/nf_log_arp.c b/net/ipv4/netfilter/nf_log_arp.c
index df5c2a2061a4..162293469ac2 100644
--- a/net/ipv4/netfilter/nf_log_arp.c
+++ b/net/ipv4/netfilter/nf_log_arp.c
@@ -122,6 +122,7 @@ static void __net_exit nf_log_arp_net_exit(struct net *net)
 static struct pernet_operations nf_log_arp_net_ops = {
        .init = nf_log_arp_net_init,
        .exit = nf_log_arp_net_exit,
+       .async = true,
 };
 
 static int __init nf_log_arp_init(void)
diff --git a/net/ipv4/netfilter/nf_log_ipv4.c b/net/ipv4/netfilter/nf_log_ipv4.c
index 4388de0e5380..7a06de140f3c 100644
--- a/net/ipv4/netfilter/nf_log_ipv4.c
+++ b/net/ipv4/netfilter/nf_log_ipv4.c
@@ -358,6 +358,7 @@ static void __net_exit nf_log_ipv4_net_exit(struct net *net)
 static struct pernet_operations nf_log_ipv4_net_ops = {
        .init = nf_log_ipv4_net_init,
        .exit = nf_log_ipv4_net_exit,
+       .async = true,
 };
 
 static int __init nf_log_ipv4_init(void)
diff --git a/net/ipv6/netfilter/nf_log_ipv6.c b/net/ipv6/netfilter/nf_log_ipv6.c
index b397a8fe88b9..0220e584589c 100644
--- a/net/ipv6/netfilter/nf_log_ipv6.c
+++ b/net/ipv6/netfilter/nf_log_ipv6.c
@@ -390,6 +390,7 @@ static void __net_exit nf_log_ipv6_net_exit(struct net *net)
 static struct pernet_operations nf_log_ipv6_net_ops = {
        .init = nf_log_ipv6_net_init,
        .exit = nf_log_ipv6_net_exit,
+       .async = true,
 };
 
 static int __init nf_log_ipv6_init(void)
diff --git a/net/netfilter/nf_log_netdev.c b/net/netfilter/nf_log_netdev.c
index 350eb147754d..254c2c6bde48 100644
--- a/net/netfilter/nf_log_netdev.c
+++ b/net/netfilter/nf_log_netdev.c
@@ -47,6 +47,7 @@ static void __net_exit nf_log_netdev_net_exit(struct net *net)
 static struct pernet_operations nf_log_netdev_net_ops = {
        .init = nf_log_netdev_net_init,
        .exit = nf_log_netdev_net_exit,
+       .async = true,
 };
 
 static int __init nf_log_netdev_init(void)

Reply via email to