X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fsvm%2Fssvm.c;h=feba7f93496b4e0f0b64fae0cb4ad952c962b859;hb=73cad33b56ffc08943e9c0d73ecb14466558baae;hp=59a5d228957fd6dea257ad6101370eb8e7d9f141;hpb=c5df8c71cc867d8120a25e4bd6d065aa63d9011c;p=vpp.git diff --git a/src/svm/ssvm.c b/src/svm/ssvm.c index 59a5d228957..feba7f93496 100644 --- a/src/svm/ssvm.c +++ b/src/svm/ssvm.c @@ -213,7 +213,7 @@ ssvm_delete_shm (ssvm_private_t * ssvm) vec_free (fn); vec_free (ssvm->name); - munmap ((void *) ssvm->requested_va, ssvm->ssvm_size); + munmap ((void *) ssvm->sh, ssvm->ssvm_size); } /** @@ -352,8 +352,8 @@ ssvm_master_init_private (ssvm_private_t * ssvm) u32 rnd_size = 0; u8 *heap; - rnd_size = (ssvm->ssvm_size + (pagesize - 1)) & ~(pagesize - 1); - rnd_size = clib_min (rnd_size, ((u64) 1 << 32) - pagesize); + rnd_size = clib_max (ssvm->ssvm_size + (pagesize - 1), ssvm->ssvm_size); + rnd_size &= ~(pagesize - 1); #if USE_DLMALLOC == 0 { @@ -370,6 +370,13 @@ ssvm_master_init_private (ssvm_private_t * ssvm) } #else heap = create_mspace (rnd_size, 1 /* locked */ ); + if (heap == 0) + { + clib_unix_warning ("mheap alloc"); + return -1; + } + + mspace_disable_expand (heap); #endif ssvm->ssvm_size = rnd_size; @@ -383,7 +390,9 @@ ssvm_master_init_private (ssvm_private_t * ssvm) clib_memset (sh, 0, sizeof (*sh)); sh->heap = heap; + sh->ssvm_va = pointer_to_uword (heap); sh->type = SSVM_SEGMENT_PRIVATE; + sh->name = ssvm->name; return 0; }