xfrm: put policies when reusing pcpu xdst entry
authorFlorian Westphal <fw@strlen.de>
Mon, 11 Dec 2017 17:23:09 +0000 (18:23 +0100)
committerSteffen Klassert <steffen.klassert@secunet.com>
Tue, 12 Dec 2017 05:39:05 +0000 (06:39 +0100)
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>
net/xfrm/xfrm_policy.c

index 038ec68..70aa5cb 100644 (file)
@@ -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;