On Wed, Nov 29, 2006 at 04:08:45PM +0800, Li Yewang wrote:
> 
> --- linux-2.6.19/net/ipv4/route.c.org 2006-12-05 10:47:02.402147160
> +0800
> +++ linux-2.6.19/net/ipv4/route.c 2006-12-05 10:48:26.339386760 +0800
> @@ -1327,7 +1327,8 @@ void ip_rt_send_redirect(struct sk_buff 
>   /* Check for load limit; set rate_last to the latest sent
>    * redirect.
>    */
> - if (time_after(jiffies,
> + if (rt->u.dst.rate_last == 0 ||
> +     time_after(jiffies,
>           (rt->u.dst.rate_last +
>     (ip_rt_redirect_load << rt->u.dst.rate_tokens)))) {
>    icmp_send(skb, ICMP_REDIRECT, ICMP_REDIR_HOST, rt->rt_gateway);

Since rate_last can also be zero if jiffies == 0 (OK that's
extremely unlikely but I'm feeling picky today :), how about
checking rate_tokens instead? The value of rate_last can only
be relevant if rate_tokens is non-zero.

BTW, please also check the other spots where rate_last/rate_token
is used.  They might need a similar fix.

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to