From 1bb74944a385ea1b8f50b975359cb1c7ca94afb4 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 10 Feb 2021 15:26:37 -0800 Subject: [PATCH] vcl: validate seg handle on migrate only if needed Type: fix Signed-off-by: Florin Coras Change-Id: I3c15a465f84f2ceb6bd5f1c459899824d4bc1c90 --- src/vcl/vppcom.c | 15 ++++++++++----- src/vnet/session/session_api.c | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index bc83b55d5d0..80f0ad7b202 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -636,12 +636,17 @@ vcl_session_migrated_handler (vcl_worker_t * wrk, void *data) return; } - fs_index = vcl_segment_table_lookup (mp->segment_handle); - if (fs_index == VCL_INVALID_SEGMENT_INDEX) + /* Only validate if a value is provided */ + if (mp->segment_handle != SESSION_INVALID_HANDLE) { - VDBG (0, "segment for session %u is not mounted!", s->session_index); - s->session_state = VCL_STATE_DETACHED; - return; + fs_index = vcl_segment_table_lookup (mp->segment_handle); + if (fs_index == VCL_INVALID_SEGMENT_INDEX) + { + VDBG (0, "segment %lx for session %u is not mounted!", + mp->segment_handle, s->session_index); + s->session_state = VCL_STATE_DETACHED; + return; + } } s->vpp_handle = mp->new_handle; diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index 0116a7ece66..e5021d4507c 100644 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -454,7 +454,7 @@ mq_send_session_migrate_cb (session_t * s, session_handle_t new_sh) mp->new_handle = new_sh; mp->vpp_thread_index = thread_index; mp->vpp_evt_q = fifo_segment_msg_q_offset (eq_seg, thread_index); - mp->segment_handle = session_segment_handle (s); + mp->segment_handle = SESSION_INVALID_HANDLE; svm_msg_q_add_and_unlock (app_mq, msg); } -- 2.16.6