From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vasily Averin Subject: Re: [NETFILTER] early_drop() imrovement (v4) Date: Wed, 27 Jun 2007 16:29:33 +0400 Message-ID: <4682582D.7080501@sw.ru> References: <4615FE1D.80206@sw.ru> <20070406102433.d3a670a5.dada1@cosmosbay.com> <4616203A.80203@sw.ru> <4616626C.9020100@trash.net> <4617845F.7080203@sw.ru> <461789CF.8000106@cosmosbay.com> <46187770.1070106@sw.ru> <46417137.5080501@sw.ru> <467FC8D2.5070102@trash.net> <46811292.1010501@sw.ru> <468223D0.90305@sw.ru> <46822540.2010004@trash.net> <4682523F.6000002@trash.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: netfilter-devel@lists.netfilter.org, rusty@rustcorp.com.au, Linux Kernel Mailing List , Eric Dumazet , Jan Engelhardt , "David S. Miller" , devel@openvz.org To: Patrick McHardy Return-path: In-Reply-To: <4682523F.6000002@trash.net> Sender: linux-kernel-owner@vger.kernel.org List-Id: netfilter-devel.vger.kernel.org Patrick McHardy wrote: > + for (i = 0; i < NF_CT_EVICTION_RANGE; i++) { > + hlist_for_each_entry(h, n, &nf_conntrack_hash[hash], hnode) { > + tmp = nf_ct_tuplehash_to_ctrack(h); > + if (!test_bit(IPS_ASSURED_BIT, &tmp->status)) > + ct = tmp; > + } > + if (ct) { > + atomic_inc(&ct->ct_general.use); > + break; > + } > + hash = (hash + 1) % nf_conntrack_htable_size; it is incorrect, We should count the number of checked _conntracks_, but you count the number of hash buckets. I.e "i" should be incremented/checked inside the nested loop. Thank you, Vasily Averin