diff options
author | 2025-05-15 19:27:17 -0700 | |
---|---|---|
committer | 2025-05-20 19:18:23 -0700 | |
commit | f1a8d107d91db7923518abd987ddcb3cd6ea6af4 (patch) | |
tree | b9e08fa04da01f0abcd5b4aa4e5d97b274a30f24 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | Merge branch 'net-bcmgenet-64bit-stats-and-expose-more-stats-in-ethtool' (diff) | |
download | wireguard-linux-f1a8d107d91db7923518abd987ddcb3cd6ea6af4.tar.xz wireguard-linux-f1a8d107d91db7923518abd987ddcb3cd6ea6af4.zip |
ipv6: Remove rcu_read_lock() in fib6_get_table().
Once allocated, the IPv6 routing table is not freed until
netns is dismantled.
fib6_get_table() uses rcu_read_lock() while iterating
net->ipv6.fib_table_hash[], but it's not needed and
rather confusing.
Because some callers have this pattern,
table = fib6_get_table();
rcu_read_lock();
/* ... use table here ... */
rcu_read_unlock();
[ See: addrconf_get_prefix_route(), ip6_route_del(),
rt6_get_route_info(), rt6_get_dflt_router() ]
and this looks illegal but is actually safe.
Let's remove rcu_read_lock() in fib6_get_table() and pass true
to the last argument of hlist_for_each_entry_rcu() to bypass
the RCU check.
Note that protection is not needed but RCU helper is used to
avoid data-race.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250516022759.44392-2-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to '')
0 files changed, 0 insertions, 0 deletions