pmalloc: fix shared mappings 05/15805/1
authorDamjan Marion <damarion@cisco.com>
Wed, 7 Nov 2018 16:55:26 +0000 (17:55 +0100)
committerDamjan Marion <damarion@cisco.com>
Wed, 7 Nov 2018 16:55:28 +0000 (17:55 +0100)
Change-Id: I6782544d5ee0a66b1a027874b23574416093ca92
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vppinfra/pmalloc.c

index a881a65..46ccd7f 100644 (file)
@@ -290,7 +290,7 @@ pmalloc_map_pages (clib_pmalloc_main_t * pm, clib_pmalloc_arena_t * a,
       return 0;
     }
 
-  mmap_flags = MAP_FIXED | MAP_ANONYMOUS;
+  mmap_flags = MAP_FIXED;
 
   if ((pm->flags & CLIB_PMALLOC_F_NO_PAGEMAP) == 0)
     mmap_flags |= MAP_LOCKED;
@@ -307,10 +307,12 @@ pmalloc_map_pages (clib_pmalloc_main_t * pm, clib_pmalloc_arena_t * a,
        pm->error = clib_mem_create_fd ((char *) a->name, &a->fd);
       if (a->fd == -1)
        goto error;
+      if ((ftruncate (a->fd, size)) == -1)
+       goto error;
     }
   else
     {
-      mmap_flags |= MAP_PRIVATE;
+      mmap_flags |= MAP_PRIVATE | MAP_ANONYMOUS;
       a->fd = -1;
     }