Message ID | 1474379126-32550-1-git-send-email-fw@strlen.de |
---|---|
State | Awaiting Upstream, archived |
Delegated to: | David Miller |
Headers | show |
On Tue, Sep 20, 2016 at 03:45:26PM +0200, Florian Westphal wrote: > This is called from the packet input path, we get lock contention > if many cpus handle ipsec in parallel. > > After recent rcu conversion it is safe to call __xfrm_state_lookup > without the spinlock. > > Signed-off-by: Florian Westphal <fw@strlen.de> Applied to ipsec-next, thanks a lot!
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index ba8bf51..a38fdea 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -1431,9 +1431,9 @@ xfrm_state_lookup(struct net *net, u32 mark, const xfrm_address_t *daddr, __be32 { struct xfrm_state *x; - spin_lock_bh(&net->xfrm.xfrm_state_lock); + rcu_read_lock(); x = __xfrm_state_lookup(net, mark, daddr, spi, proto, family); - spin_unlock_bh(&net->xfrm.xfrm_state_lock); + rcu_read_unlock(); return x; } EXPORT_SYMBOL(xfrm_state_lookup);
This is called from the packet input path, we get lock contention if many cpus handle ipsec in parallel. After recent rcu conversion it is safe to call __xfrm_state_lookup without the spinlock. Signed-off-by: Florian Westphal <fw@strlen.de> --- net/xfrm/xfrm_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)