diff options
author | Jens Rosenboom <me@jayr.de> | 2009-06-25 06:55:50 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-26 05:03:50 +0200 |
commit | a1faa69810b2af562b70b2a71c116c7d03575dd3 (patch) | |
tree | 074a4b79742f1749eafc5e539f3241e5d57d8236 /net | |
parent | tcp: missing check ACK flag of received segment in FIN-WAIT-2 state (diff) | |
download | linux-a1faa69810b2af562b70b2a71c116c7d03575dd3.tar.xz linux-a1faa69810b2af562b70b2a71c116c7d03575dd3.zip |
ipv6: avoid wraparound for expired preferred lifetime
Avoid showing wrong high values when the preferred lifetime of an address
is expired.
Signed-off-by: Jens Rosenboom <me@jayr.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/addrconf.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 8c1e86afbbf5..3883b4036a74 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -3362,7 +3362,10 @@ static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa, valid = ifa->valid_lft; if (preferred != INFINITY_LIFE_TIME) { long tval = (jiffies - ifa->tstamp)/HZ; - preferred -= tval; + if (preferred > tval) + preferred -= tval; + else + preferred = 0; if (valid != INFINITY_LIFE_TIME) valid -= tval; } |