xfrm: Refcount destination entry on xfrm_lookup
We return a destination entry without refcount if a socket policy is found in xfrm_lookup. This triggers a warning on a negative refcount when freeeing this dst entry. So take a refcount in this case to fix it. This refcount was forgotten when xfrm changed to cache bundles instead of policies for outgoing flows. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Acked-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8a4eb5734e
commit
fbd5060875
|
@ -1804,6 +1804,8 @@ struct dst_entry *xfrm_lookup(struct net *net, struct dst_entry *dst_orig,
|
|||
goto no_transform;
|
||||
}
|
||||
|
||||
dst_hold(&xdst->u.dst);
|
||||
|
||||
spin_lock_bh(&xfrm_policy_sk_bundle_lock);
|
||||
xdst->u.dst.next = xfrm_policy_sk_bundles;
|
||||
xfrm_policy_sk_bundles = &xdst->u.dst;
|
||||
|
|
Loading…
Reference in New Issue
Block a user