net: dst_cache: annotate data-races around dst_cache->reset_ts
[linux-2.6-block.git] / net / core / dst_cache.c
index 0c0bdb058c5b1ab81e14aa48d8612a6253a7c852..f9df84a6c4b2dbe63c6f61fb431e179f92e072e0 100644 (file)
@@ -47,7 +47,8 @@ static struct dst_entry *dst_cache_per_cpu_get(struct dst_cache *dst_cache,
        /* the cache already hold a dst reference; it can't go away */
        dst_hold(dst);
 
-       if (unlikely(!time_after(idst->refresh_ts, dst_cache->reset_ts) ||
+       if (unlikely(!time_after(idst->refresh_ts,
+                                READ_ONCE(dst_cache->reset_ts)) ||
                     (dst->obsolete && !dst->ops->check(dst, idst->cookie)))) {
                dst_cache_per_cpu_dst_set(idst, NULL, 0);
                dst_release(dst);
@@ -170,7 +171,7 @@ void dst_cache_reset_now(struct dst_cache *dst_cache)
        if (!dst_cache->cache)
                return;
 
-       dst_cache->reset_ts = jiffies;
+       dst_cache_reset(dst_cache);
        for_each_possible_cpu(i) {
                struct dst_cache_pcpu *idst = per_cpu_ptr(dst_cache->cache, i);
                struct dst_entry *dst = idst->dst;