Message ID | 530F0201.2040303@cn.fujitsu.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Duan Jiong <duanj.fnst@cn.fujitsu.com> Date: Thu, 27 Feb 2014 17:14:41 +0800 > If the neigh table's entries is less than gc_thresh1, the function > will return directly, and the reachabletime will not be recompute, > so the reachabletime can be guessed. > > Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com> It looks like this bug was unintentionally introduced by: commit 2724680bceee94eac391552863771af105a7355c Author: YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> Date: Tue Jan 22 05:20:05 2013 +0000 neigh: Keep neighbour cache entries if number of them is small enough. Applied and queued up for -stable, thanks! -- 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/core/neighbour.c b/net/core/neighbour.c index 026bfd1..7c62a34 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -766,9 +766,6 @@ static void neigh_periodic_work(struct work_struct *work) nht = rcu_dereference_protected(tbl->nht, lockdep_is_held(&tbl->lock)); - if (atomic_read(&tbl->entries) < tbl->gc_thresh1) - goto out; - /* * periodically recompute ReachableTime from random function */ @@ -781,6 +778,9 @@ static void neigh_periodic_work(struct work_struct *work) neigh_rand_reach_time(NEIGH_VAR(p, BASE_REACHABLE_TIME)); } + if (atomic_read(&tbl->entries) < tbl->gc_thresh1) + goto out; + for (i = 0 ; i < (1 << nht->hash_shift); i++) { np = &nht->hash_buckets[i];
If the neigh table's entries is less than gc_thresh1, the function will return directly, and the reachabletime will not be recompute, so the reachabletime can be guessed. Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com> --- net/core/neighbour.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)