diff options
-rw-r--r-- | net/ipv6/addrconf.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index c0641887bdeb..93a40a8ade88 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -2797,12 +2797,16 @@ restart: | |||
2797 | ifp->idev->nd_parms->retrans_time / HZ; | 2797 | ifp->idev->nd_parms->retrans_time / HZ; |
2798 | #endif | 2798 | #endif |
2799 | 2799 | ||
2800 | if (age >= ifp->valid_lft) { | 2800 | if (ifp->valid_lft != INFINITY_LIFE_TIME && |
2801 | age >= ifp->valid_lft) { | ||
2801 | spin_unlock(&ifp->lock); | 2802 | spin_unlock(&ifp->lock); |
2802 | in6_ifa_hold(ifp); | 2803 | in6_ifa_hold(ifp); |
2803 | read_unlock(&addrconf_hash_lock); | 2804 | read_unlock(&addrconf_hash_lock); |
2804 | ipv6_del_addr(ifp); | 2805 | ipv6_del_addr(ifp); |
2805 | goto restart; | 2806 | goto restart; |
2807 | } else if (ifp->prefered_lft == INFINITY_LIFE_TIME) { | ||
2808 | spin_unlock(&ifp->lock); | ||
2809 | continue; | ||
2806 | } else if (age >= ifp->prefered_lft) { | 2810 | } else if (age >= ifp->prefered_lft) { |
2807 | /* jiffies - ifp->tsamp > age >= ifp->prefered_lft */ | 2811 | /* jiffies - ifp->tsamp > age >= ifp->prefered_lft */ |
2808 | int deprecate = 0; | 2812 | int deprecate = 0; |