diff options
Diffstat (limited to 'net/xfrm/xfrm_policy.c')
-rw-r--r-- | net/xfrm/xfrm_policy.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 841b32a2e680..b7754b1b73a4 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -1077,6 +1077,7 @@ static void __xfrm_policy_link(struct xfrm_policy *pol, int dir) | |||
1077 | struct hlist_head *chain = policy_hash_bysel(&pol->selector, | 1077 | struct hlist_head *chain = policy_hash_bysel(&pol->selector, |
1078 | pol->family, dir); | 1078 | pol->family, dir); |
1079 | 1079 | ||
1080 | list_add_tail(&pol->bytype, &xfrm_policy_bytype[pol->type]); | ||
1080 | hlist_add_head(&pol->bydst, chain); | 1081 | hlist_add_head(&pol->bydst, chain); |
1081 | hlist_add_head(&pol->byidx, xfrm_policy_byidx+idx_hash(pol->index)); | 1082 | hlist_add_head(&pol->byidx, xfrm_policy_byidx+idx_hash(pol->index)); |
1082 | xfrm_policy_count[dir]++; | 1083 | xfrm_policy_count[dir]++; |
@@ -1731,8 +1732,7 @@ restart: | |||
1731 | * We can't enlist stable bundles either. | 1732 | * We can't enlist stable bundles either. |
1732 | */ | 1733 | */ |
1733 | write_unlock_bh(&policy->lock); | 1734 | write_unlock_bh(&policy->lock); |
1734 | if (dst) | 1735 | dst_free(dst); |
1735 | dst_free(dst); | ||
1736 | 1736 | ||
1737 | if (pol_dead) | 1737 | if (pol_dead) |
1738 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTPOLDEAD); | 1738 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTPOLDEAD); |
@@ -1748,8 +1748,7 @@ restart: | |||
1748 | err = xfrm_dst_update_origin(dst, fl); | 1748 | err = xfrm_dst_update_origin(dst, fl); |
1749 | if (unlikely(err)) { | 1749 | if (unlikely(err)) { |
1750 | write_unlock_bh(&policy->lock); | 1750 | write_unlock_bh(&policy->lock); |
1751 | if (dst) | 1751 | dst_free(dst); |
1752 | dst_free(dst); | ||
1753 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTBUNDLECHECKERROR); | 1752 | XFRM_INC_STATS(LINUX_MIB_XFRMOUTBUNDLECHECKERROR); |
1754 | goto error; | 1753 | goto error; |
1755 | } | 1754 | } |