netfilter: nf_conntrack: ensure that CONNTRACK_LOCKS is power of 2
authorLi RongQing <lirongqing@baidu.com>
Tue, 26 Feb 2019 09:20:52 +0000 (17:20 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 1 Mar 2019 13:36:46 +0000 (14:36 +0100)
CONNTRACK_LOCKS is divisor when computer array index, if it is power of
2, compiler will optimize modulo operation as bitwise AND, or else
modulo will lower performance.

Suggested-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Li RongQing <lirongqing@baidu.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_conntrack_core.c

index ff9313c..82bfbee 100644 (file)
@@ -2480,6 +2480,7 @@ int nf_conntrack_init_net(struct net *net)
        int cpu;
 
        BUILD_BUG_ON(IP_CT_UNTRACKED == IP_CT_NUMBER);
+       BUILD_BUG_ON_NOT_POWER_OF_2(CONNTRACK_LOCKS);
        atomic_set(&net->ct.count, 0);
 
        net->ct.pcpu_lists = alloc_percpu(struct ct_pcpu);