diff options
author | Rob Herring <robh@kernel.org> | 2018-12-13 20:20:36 +0300 |
---|---|---|
committer | Rob Herring <robh@kernel.org> | 2018-12-13 20:20:36 +0300 |
commit | acc2038738bd6f881e7a277ba14fa7c589fd3058 (patch) | |
tree | fd56524867a9b726b3e5d2cb040ff16b2f2a67a0 /net/netfilter/nf_conntrack_core.c | |
parent | cd1cc0bef46fc8d8f9ebe82d2064d4f4bd5ecf16 (diff) | |
parent | 2c9b0b00af23cdc70d28d82e077dc1d280bcb84a (diff) | |
download | linux-acc2038738bd6f881e7a277ba14fa7c589fd3058.tar.xz |
Merge branch 'yaml-bindings-for-v4.21' into dt/next
Diffstat (limited to 'net/netfilter/nf_conntrack_core.c')
-rw-r--r-- | net/netfilter/nf_conntrack_core.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index ca1168d67fac..e92e749aff53 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -1073,19 +1073,22 @@ static unsigned int early_drop_list(struct net *net, return drops; } -static noinline int early_drop(struct net *net, unsigned int _hash) +static noinline int early_drop(struct net *net, unsigned int hash) { - unsigned int i; + unsigned int i, bucket; for (i = 0; i < NF_CT_EVICTION_RANGE; i++) { struct hlist_nulls_head *ct_hash; - unsigned int hash, hsize, drops; + unsigned int hsize, drops; rcu_read_lock(); nf_conntrack_get_ht(&ct_hash, &hsize); - hash = reciprocal_scale(_hash++, hsize); + if (!i) + bucket = reciprocal_scale(hash, hsize); + else + bucket = (bucket + 1) % hsize; - drops = early_drop_list(net, &ct_hash[hash]); + drops = early_drop_list(net, &ct_hash[bucket]); rcu_read_unlock(); if (drops) { |