diff options
author | Andrew Yourtchenko <ayourtch@gmail.com> | 2018-09-05 12:30:35 +0200 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2018-09-06 11:08:30 +0000 |
commit | f74b4d2b559b1d5697fd625d9c8e0f76ba5a4463 (patch) | |
tree | 7f30ce42aac8d01ca65054e4da1118c0c1e8d058 /src | |
parent | eabe79ca28d3ed78d082bf0a5266dbc5289c3e8d (diff) |
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 <ayourtch@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/acl/session_inlines.h | 2 |
1 files changed, 2 insertions, 0 deletions
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 |