From 7b185360843c2b1cbcbeede64340add8a56fe440 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Sun, 4 Mar 2018 16:41:35 +0100 Subject: vppinfra: fix clib_mem_vm_ext_alloc non-shared allocations Change-Id: I6d049c0875b91f67f008dc04ae7efe2f8ddc276e Signed-off-by: Damjan Marion --- src/vppinfra/linux/mem.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/vppinfra/linux') diff --git a/src/vppinfra/linux/mem.c b/src/vppinfra/linux/mem.c index c4973a6b8e0..75d2a7e0559 100644 --- a/src/vppinfra/linux/mem.c +++ b/src/vppinfra/linux/mem.c @@ -83,7 +83,7 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a) clib_error_t *err = 0; void *addr = 0; u8 *filename = 0; - int mmap_flags = MAP_SHARED; + int mmap_flags = 0; int log2_page_size; int n_pages; int old_mpol = -1; @@ -108,9 +108,13 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a) } } + if (a->flags & CLIB_MEM_VM_F_LOCKED) + mmap_flags |= MAP_LOCKED; + /* if we are creating shared segment, we need file descriptor */ if (a->flags & CLIB_MEM_VM_F_SHARED) { + mmap_flags |= MAP_SHARED; /* if hugepages are needed we need to create mount point */ if (a->flags & CLIB_MEM_VM_F_HUGETLB) { @@ -169,14 +173,14 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a) } else /* not CLIB_MEM_VM_F_SHARED */ { + mmap_flags |= MAP_PRIVATE | MAP_ANONYMOUS; if (a->flags & CLIB_MEM_VM_F_HUGETLB) { - mmap_flags |= MAP_HUGETLB | MAP_PRIVATE | MAP_ANONYMOUS; + mmap_flags |= MAP_HUGETLB; log2_page_size = 21; } else { - mmap_flags |= MAP_PRIVATE | MAP_ANONYMOUS; log2_page_size = min_log2 (sysconf (_SC_PAGESIZE)); } } -- cgit 1.2.3-korg