diff --git a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c index 1438432..b8850a2 100644 --- a/net/ipv4/netfilter/ipt_recent.c +++ b/net/ipv4/netfilter/ipt_recent.c @@ -438,11 +438,15 @@ #endif (!r_list[hash_table[hash_result]].ttl || r_list[hash_table[hash_result]].ttl == ttl))) { /* Collision in hash table */ hash_result = (hash_result + 1) % ip_list_hash_size; + if (hash_result == orig_hash_result) + break; } } else { while(hash_table[hash_result] != -1 && r_list[hash_table[hash_result]].addr != addr) { /* Collision in hash table */ hash_result = (hash_result + 1) % ip_list_hash_size; + if (hash_result == orig_hash_result) + break; } }