Commit e248948a authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller

ipv6: annotate data-races in rt6_probe()

Use READ_ONCE() while reading idev->cnf.rtr_probe_interval
while its value could be changed.
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarJiri Pirko <jiri@nvidia.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fca34cc0
...@@ -645,14 +645,15 @@ static void rt6_probe(struct fib6_nh *fib6_nh) ...@@ -645,14 +645,15 @@ static void rt6_probe(struct fib6_nh *fib6_nh)
write_lock_bh(&neigh->lock); write_lock_bh(&neigh->lock);
if (!(neigh->nud_state & NUD_VALID) && if (!(neigh->nud_state & NUD_VALID) &&
time_after(jiffies, time_after(jiffies,
neigh->updated + idev->cnf.rtr_probe_interval)) { neigh->updated +
READ_ONCE(idev->cnf.rtr_probe_interval))) {
work = kmalloc(sizeof(*work), GFP_ATOMIC); work = kmalloc(sizeof(*work), GFP_ATOMIC);
if (work) if (work)
__neigh_set_probe_once(neigh); __neigh_set_probe_once(neigh);
} }
write_unlock_bh(&neigh->lock); write_unlock_bh(&neigh->lock);
} else if (time_after(jiffies, last_probe + } else if (time_after(jiffies, last_probe +
idev->cnf.rtr_probe_interval)) { READ_ONCE(idev->cnf.rtr_probe_interval))) {
work = kmalloc(sizeof(*work), GFP_ATOMIC); work = kmalloc(sizeof(*work), GFP_ATOMIC);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment