neighbour: fix various data-races
authorEric Dumazet <edumazet@google.com>
Thu, 19 Oct 2023 12:21:04 +0000 (12:21 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 21 Oct 2023 00:41:29 +0000 (17:41 -0700)
commita9beb7e81bcb876615e1fbb3c07f3f9dba69831f
tree8ff743375eb8eb4f41bf7926aa40bebc35c117dd
parent72bf4f1767f0386970dc04726dc5bc2e3991dc19
neighbour: fix various data-races

1) tbl->gc_thresh1, tbl->gc_thresh2, tbl->gc_thresh3 and tbl->gc_interval
   can be written from sysfs.

2) tbl->last_flush is read locklessly from neigh_alloc()

3) tbl->proxy_queue.qlen is read locklessly from neightbl_fill_info()

4) neightbl_fill_info() reads cpu stats that can be changed concurrently.

Fixes: c7fb64db001f ("[NETLINK]: Neighbour table configuration and statistics via rtnetlink")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Link: https://lore.kernel.org/r/20231019122104.1448310-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/neighbour.c