Vasily Averin wrote: > 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. I misunderstood your patch then. This one should be better.