From f74b4d2b559b1d5697fd625d9c8e0f76ba5a4463 Mon Sep 17 00:00:00 2001 From: Andrew Yourtchenko Date: Wed, 5 Sep 2018 12:30:35 +0200 Subject: acl-plugin: VPP-1400: fix crash when removing a session entry bihash deletion operation may in turn do underlying memory operations, so ensure it is using the correct (private) heap. Change-Id: Ibef7ad7f9db6fa83da02316bf7509072ce579bc0 Signed-off-by: Andrew Yourtchenko --- src/plugins/acl/session_inlines.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/acl/session_inlines.h b/src/plugins/acl/session_inlines.h index 0d7c1e4ace7..93683c4c4a1 100644 --- a/src/plugins/acl/session_inlines.h +++ b/src/plugins/acl/session_inlines.h @@ -394,6 +394,7 @@ acl_fa_deactivate_session (acl_main_t * am, u32 sw_if_index, fa_session_t *sess = get_session_ptr (am, sess_id.thread_index, sess_id.session_index); ASSERT (sess->thread_index == os_get_thread_index ()); + void *oldheap = clib_mem_set_heap (am->acl_mheap); if (sess->is_ip6) { clib_bihash_add_del_40_8 (&am->fa_ip6_sessions_hash, @@ -409,6 +410,7 @@ acl_fa_deactivate_session (acl_main_t * am, u32 sw_if_index, sess->deleted = 1; clib_smp_atomic_add (&am->fa_session_total_deactivations, 1); + clib_mem_set_heap (oldheap); } always_inline void -- cgit 1.2.3-korg