From 404b8a36e737e2911ca8874363a4e87cb707e5f9 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Thu, 9 May 2019 12:08:06 -0700 Subject: session: segment manager fixes - fix segment size rounding for 4GB segments - fix initialization of first segment size - cleanup fifo segment info retrieval Change-Id: I5ebf20f71ea797087653e7e76fa2e37b2686ec40 Signed-off-by: Florin Coras --- src/vnet/session/application.c | 2 +- src/vnet/session/segment_manager.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src/vnet') diff --git a/src/vnet/session/application.c b/src/vnet/session/application.c index 69cc87c9575..4bae8dba4de 100644 --- a/src/vnet/session/application.c +++ b/src/vnet/session/application.c @@ -554,7 +554,7 @@ application_alloc_and_init (app_init_args_t * a) props = application_segment_manager_properties (app); segment_manager_props_init (props); - props->segment_size = options[APP_OPTIONS_ADD_SEGMENT_SIZE]; + props->segment_size = options[APP_OPTIONS_SEGMENT_SIZE]; props->prealloc_fifos = options[APP_OPTIONS_PREALLOC_FIFO_PAIRS]; if (options[APP_OPTIONS_ADD_SEGMENT_SIZE]) { diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c index 6213cd517f6..cbec493e55f 100644 --- a/src/vnet/session/segment_manager.c +++ b/src/vnet/session/segment_manager.c @@ -114,7 +114,9 @@ segment_manager_add_segment (segment_manager_t * sm, u32 segment_size) */ segment_size = segment_size ? segment_size : props->add_segment_size; page_size = clib_mem_get_page_size (); - segment_size = (segment_size + page_size - 1) & ~(page_size - 1); + /* Protect against segment size u32 wrap */ + segment_size = clib_max (segment_size + page_size - 1, segment_size); + segment_size = segment_size & ~(page_size - 1); if (props->segment_type != SSVM_SEGMENT_PRIVATE) { seg_name = format (0, "%d-%d%c", getpid (), smm->seg_name_counter++, 0); -- cgit 1.2.3-korg