X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fsvm%2Fssvm.c;h=69463b1f192628ab5989ca54391a18eee25836b4;hb=03ce46219cd0fabfd4918822c5b9fed9ef880de8;hp=feba7f93496b4e0f0b64fae0cb4ad952c962b859;hpb=0af49a8fc94c57c71c97909fbb8b7acc403f980a;p=vpp.git diff --git a/src/svm/ssvm.c b/src/svm/ssvm.c index feba7f93496..69463b1f192 100644 --- a/src/svm/ssvm.c +++ b/src/svm/ssvm.c @@ -347,9 +347,8 @@ ssvm_delete_memfd (ssvm_private_t * memfd) int ssvm_master_init_private (ssvm_private_t * ssvm) { + uword pagesize = clib_mem_get_page_size (), rnd_size = 0; ssvm_shared_header_t *sh; - u32 pagesize = clib_mem_get_page_size (); - u32 rnd_size = 0; u8 *heap; rnd_size = clib_max (ssvm->ssvm_size + (pagesize - 1), ssvm->ssvm_size); @@ -377,6 +376,11 @@ ssvm_master_init_private (ssvm_private_t * ssvm) } mspace_disable_expand (heap); + + /* Find actual size because mspace size is rounded up by dlmalloc */ + struct dlmallinfo dlminfo; + dlminfo = mspace_mallinfo (heap); + rnd_size = dlminfo.fordblks; #endif ssvm->ssvm_size = rnd_size; @@ -390,6 +394,7 @@ ssvm_master_init_private (ssvm_private_t * ssvm) clib_memset (sh, 0, sizeof (*sh)); sh->heap = heap; + sh->ssvm_size = rnd_size; sh->ssvm_va = pointer_to_uword (heap); sh->type = SSVM_SEGMENT_PRIVATE; sh->name = ssvm->name;