mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
net: dst_cache: annotate data-races around dst_cache->reset_ts
dst_cache->reset_ts is read or written locklessly, add READ_ONCE() and WRITE_ONCE() annotations. Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Paolo Abeni <pabeni@redhat.com> Link: https://lore.kernel.org/r/20240507132000.614591-1-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
e497c3228a
commit
3b09b2bd0d
@ -76,7 +76,7 @@ struct dst_entry *dst_cache_get_ip6(struct dst_cache *dst_cache,
|
||||
*/
|
||||
static inline void dst_cache_reset(struct dst_cache *dst_cache)
|
||||
{
|
||||
dst_cache->reset_ts = jiffies;
|
||||
WRITE_ONCE(dst_cache->reset_ts, jiffies);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user