Message ID | 1277588267.26161.300.camel@localhost |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Ben Hutchings <ben@decadent.org.uk> Date: Sat, 26 Jun 2010 22:37:47 +0100 > Since addresses are only revalidated every 2 minutes, the reported > valid_lft can underflow shortly before the address is deleted. > Clamp it to a minimum of 0, as for prefered_lft. > > Reported-by: Piotr Lewandowski <piotr.lewandowski@gmail.com> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Applied to net-next-2.6 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index b97bb1f..1459eed 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3492,8 +3492,12 @@ static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa, preferred -= tval; else preferred = 0; - if (valid != INFINITY_LIFE_TIME) - valid -= tval; + if (valid != INFINITY_LIFE_TIME) { + if (valid > tval) + valid -= tval; + else + valid = 0; + } } } else { preferred = INFINITY_LIFE_TIME;
Since addresses are only revalidated every 2 minutes, the reported valid_lft can underflow shortly before the address is deleted. Clamp it to a minimum of 0, as for prefered_lft. Reported-by: Piotr Lewandowski <piotr.lewandowski@gmail.com> Signed-off-by: Ben Hutchings <ben@decadent.org.uk> --- This is compile-tested only. I don't claim any familiarity with this code. Ben. net/ipv6/addrconf.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)