From 284e658dbf6f7d363688c1e1765e352042b88089 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Wed, 8 Jul 2020 17:51:23 +0200 Subject: ikev2: fix race condition in child_sa update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Type: fix Change-Id: I864d49a641b45337c0a45a0af7d996cad75f6629 Signed-off-by: Benoît Ganne Signed-off-by: Filip Tehlar --- src/plugins/ikev2/ikev2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/ikev2/ikev2.c b/src/plugins/ikev2/ikev2.c index c11bd0f9b08..173323b8158 100644 --- a/src/plugins/ikev2/ikev2.c +++ b/src/plugins/ikev2/ikev2.c @@ -4120,6 +4120,7 @@ ikev2_mngr_process_child_sa (ikev2_sa_t * sa, ikev2_child_sa_t * csa, csa->time_to_expiration = 0; ikev2_delete_child_sa_internal (vm, sa, csa); res |= 1; + return res; } } @@ -4161,8 +4162,10 @@ ikev2_mngr_process_child_sa (ikev2_sa_t * sa, ikev2_child_sa_t * csa, u32 *sas_in = NULL; vec_add1 (sas_in, csa->remote_sa_id); + vlib_worker_thread_barrier_sync (vm); ipsec_tun_protect_update (sw_if_index, NULL, csa->local_sa_id, sas_in); ipsec_sa_unlock_id (ikev2_flip_alternate_sa_bit (csa->remote_sa_id)); + vlib_worker_thread_barrier_release (vm); } return res; -- cgit 1.2.3-korg