netfilter: nfnetlink_queue: autoload nf_conntrack_netlink module NFQA_CFG_F_CONNTRACK...
authorKen-ichirou MATSUZAWA <chamaken@gmail.com>
Tue, 5 Jan 2016 00:32:59 +0000 (09:32 +0900)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 8 Jan 2016 12:25:06 +0000 (13:25 +0100)
This patch enables to load nf_conntrack_netlink module if
NFQA_CFG_F_CONNTRACK config flag is specified.

Signed-off-by: Ken-ichirou MATSUZAWA <chamas@h4.dion.ne.jp>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nfnetlink_queue.c

index c1f6df4cfe88769ad4b4b47b4f631b95f8c85f3f..1d3936587ace28c0f8725a4022b5c93255b6e0fc 100644 (file)
@@ -1147,6 +1147,17 @@ static int nfqnl_recv_config(struct net *net, struct sock *ctnl,
                if (flags & mask & NFQA_CFG_F_SECCTX)
                        return -EOPNOTSUPP;
 #endif
+               if ((flags & mask & NFQA_CFG_F_CONNTRACK) &&
+                   !rcu_access_pointer(nfnl_ct_hook)) {
+#ifdef CONFIG_MODULES
+                       nfnl_unlock(NFNL_SUBSYS_QUEUE);
+                       request_module("ip_conntrack_netlink");
+                       nfnl_lock(NFNL_SUBSYS_QUEUE);
+                       if (rcu_access_pointer(nfnl_ct_hook))
+                               return -EAGAIN;
+#endif
+                       return -EOPNOTSUPP;
+               }
        }
 
        rcu_read_lock();