[IPV4]: Bug fix in rt_check_expire()
authorEric Dumazet <dada1@cosmosbay.com>
Tue, 5 Jul 2005 22:00:32 +0000 (15:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Jul 2005 22:00:32 +0000 (15:00 -0700)
commitbb1d23b02657f494dff295f6cdd1f29df30fa61e
tree59c170cb94d2f65a0717ea67e169b3e2e22be11e
parent424c4b70cc4ff3930ee36a2ef7b204e4d704fd26
[IPV4]: Bug fix in rt_check_expire()

- rt_check_expire() fixes (an overflow occured if size of the hash
  was >= 65536)

reminder of the bugfix:

The rt_check_expire() has a serious problem on machines with large
route caches, and a standard HZ value of 1000.

With default values, ie ip_rt_gc_interval = 60*HZ = 60000 ;

the loop count :

     for (t = ip_rt_gc_interval << rt_hash_log; t >= 0;

overflows (t is a 31 bit value) as soon rt_hash_log is >= 16  (65536
slots in route cache hash table).

In this case, rt_check_expire() does nothing at all

Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/route.c