diff options
author | 2025-03-07 12:47:54 +0100 | |
---|---|---|
committer | 2025-03-12 10:15:38 +0100 | |
commit | 2e460eefbd4469420349bdcb81b331a46211717a (patch) | |
tree | a75ef3e337245b17f8c634f14812b2494c65c804 | |
parent | Merge branch 'Support-PMTU-in-tunnel-mode-for-packet-offload' (diff) | |
download | wireguard-linux-2e460eefbd4469420349bdcb81b331a46211717a.tar.xz wireguard-linux-2e460eefbd4469420349bdcb81b331a46211717a.zip |
xfrm: state: make xfrm_state_lookup_byaddr lockless
This appears to be an oversight back when the state lookup
was converted to RCU, I see no reason why we need to hold the
state lock here.
__xfrm_state_lookup_byaddr already uses xfrm_state_hold_rcu
helper to obtain a reference, so just replace the state
lock with rcu.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to '')
-rw-r--r-- | net/xfrm/xfrm_state.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 7b1028671144..07545944a536 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -2313,12 +2313,12 @@ xfrm_state_lookup_byaddr(struct net *net, u32 mark, struct xfrm_hash_state_ptrs state_ptrs; struct xfrm_state *x; - spin_lock_bh(&net->xfrm.xfrm_state_lock); + rcu_read_lock(); xfrm_hash_ptrs_get(net, &state_ptrs); x = __xfrm_state_lookup_byaddr(&state_ptrs, mark, daddr, saddr, proto, family); - spin_unlock_bh(&net->xfrm.xfrm_state_lock); + rcu_read_unlock(); return x; } EXPORT_SYMBOL(xfrm_state_lookup_byaddr); |