diff options
author | Florian Westphal <fw@strlen.de> | 2017-12-11 18:23:09 +0100 |
---|---|---|
committer | Steffen Klassert <steffen.klassert@secunet.com> | 2017-12-12 06:39:05 +0100 |
commit | d2950278d2d04ff5314abeb38d9c59c4e7c0ee53 (patch) | |
tree | 9c9313f9c950711842fa6a2dc0d0745d831ac575 /net/xfrm | |
parent | 732706afe1cc46ef48493b3d2b69c98f36314ae4 (diff) | |
download | linux-d2950278d2d04ff5314abeb38d9c59c4e7c0ee53.tar.gz linux-d2950278d2d04ff5314abeb38d9c59c4e7c0ee53.tar.bz2 linux-d2950278d2d04ff5314abeb38d9c59c4e7c0ee53.zip |
xfrm: put policies when reusing pcpu xdst entry
We need to put the policies when re-using the pcpu xdst entry, else
this leaks the reference.
Fixes: ec30d78c14a813db39a647b6a348b428 ("xfrm: add xdst pcpu cache")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Diffstat (limited to 'net/xfrm')
-rw-r--r-- | net/xfrm/xfrm_policy.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 038ec68f6901..70aa5cb0c659 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -1839,6 +1839,7 @@ xfrm_resolve_and_create_bundle(struct xfrm_policy **pols, int num_pols, sizeof(struct xfrm_policy *) * num_pols) == 0 && xfrm_xdst_can_reuse(xdst, xfrm, err)) { dst_hold(&xdst->u.dst); + xfrm_pols_put(pols, num_pols); while (err > 0) xfrm_state_put(xfrm[--err]); return xdst; |