aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/threads/kernel_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charon/threads/kernel_interface.c')
-rw-r--r--src/charon/threads/kernel_interface.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/src/charon/threads/kernel_interface.c b/src/charon/threads/kernel_interface.c
index a2a4265a7..43956b055 100644
--- a/src/charon/threads/kernel_interface.c
+++ b/src/charon/threads/kernel_interface.c
@@ -1585,22 +1585,14 @@ static status_t add_policy(private_kernel_interface_t *this,
if (memcmp(&current->sel, &policy->sel, sizeof(struct xfrm_selector)) == 0 &&
policy->direction == current->direction)
{
- free(policy);
/* use existing policy */
if (!update)
{
current->refcount++;
DBG2(DBG_KNL, "policy %R===%R already exists, increasing ",
"refcount", src_ts, dst_ts);
- if (!high_prio)
- {
- /* if added policy is for a ROUTED child_sa, do not
- * overwrite existing INSTALLED policy */
- iterator->destroy(iterator);
- pthread_mutex_unlock(&this->policies_mutex);
- return SUCCESS;
- }
}
+ free(policy);
policy = current;
found = TRUE;
break;