From 1cfab8d7f701de0015eb8404cff3a96b186a3efc Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Sun, 26 Oct 2003 11:29:16 -0800 Subject: [PATCH] [IPSEC]: Fix accidental too many ref drops on policies. --- net/xfrm/xfrm_policy.c | 2 +- net/xfrm/xfrm_state.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index f2bfc4c2e0728..85f626d20c4a2 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -519,7 +519,6 @@ static struct xfrm_policy *__xfrm_policy_unlink(struct xfrm_policy *pol, *polp != NULL; polp = &(*polp)->next) { if (*polp == pol) { *polp = pol->next; - atomic_dec(&pol->refcnt); return pol; } } @@ -574,6 +573,7 @@ static struct xfrm_policy *clone_policy(struct xfrm_policy *old, int dir) write_lock_bh(&xfrm_policy_lock); __xfrm_policy_link(newp, XFRM_POLICY_MAX+dir); write_unlock_bh(&xfrm_policy_lock); + xfrm_pol_put(newp); } return newp; } diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index eaa6104005f7d..ab1c1ec1aa12b 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -831,6 +831,7 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 *optval, int optlen) if (err >= 0) { xfrm_sk_policy_insert(sk, err, pol); + xfrm_pol_put(pol); err = 0; } -- 2.53.0