mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-17 03:39:07 +08:00
net: dst: annotate data-races around dst->lastuse
(dst_entry)->lastuse is read and written locklessly, add corresponding annotations. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20250630121934.3399505-4-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
36229b2cac
commit
8f2b2282d0
@@ -240,9 +240,9 @@ static inline void dst_hold(struct dst_entry *dst)
|
||||
|
||||
static inline void dst_use_noref(struct dst_entry *dst, unsigned long time)
|
||||
{
|
||||
if (unlikely(time != dst->lastuse)) {
|
||||
if (unlikely(time != READ_ONCE(dst->lastuse))) {
|
||||
dst->__use++;
|
||||
dst->lastuse = time;
|
||||
WRITE_ONCE(dst->lastuse, time);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1026,9 +1026,11 @@ int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, u32 id,
|
||||
.rta_error = error,
|
||||
.rta_id = id,
|
||||
};
|
||||
unsigned long delta;
|
||||
|
||||
if (dst) {
|
||||
ci.rta_lastuse = jiffies_delta_to_clock_t(jiffies - dst->lastuse);
|
||||
delta = jiffies - READ_ONCE(dst->lastuse);
|
||||
ci.rta_lastuse = jiffies_delta_to_clock_t(delta);
|
||||
ci.rta_used = dst->__use;
|
||||
ci.rta_clntref = rcuref_read(&dst->__rcuref);
|
||||
}
|
||||
|
||||
@@ -2133,7 +2133,8 @@ static void rt6_age_examine_exception(struct rt6_exception_bucket *bucket,
|
||||
* expired, independently from their aging, as per RFC 8201 section 4
|
||||
*/
|
||||
if (!(rt->rt6i_flags & RTF_EXPIRES)) {
|
||||
if (time_after_eq(now, rt->dst.lastuse + gc_args->timeout)) {
|
||||
if (time_after_eq(now, READ_ONCE(rt->dst.lastuse) +
|
||||
gc_args->timeout)) {
|
||||
pr_debug("aging clone %p\n", rt);
|
||||
rt6_remove_exception(bucket, rt6_ex);
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user