Commit 2e460eef authored by Florian Westphal's avatar Florian Westphal Committed by Steffen Klassert
Browse files

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: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
parent 9d381c77
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);