Provide page-aligned length to ftruncate. 15/10415/2
authorIgor Mikhailov (imichail) <imichail@cisco.com>
Mon, 5 Feb 2018 20:09:36 +0000 (12:09 -0800)
committerDamjan Marion <dmarion.lists@gmail.com>
Tue, 6 Feb 2018 10:35:04 +0000 (10:35 +0000)
For some files such as hugepages files, ftruncate() fails with the error
"Invalid argument" if the 'length' parameter is not on a page boundary.

Change-Id: I42a9cde98707da15e3c5d1653046e2277fc7a424
Signed-off-by: Igor Mikhailov (imichail) <imichail@cisco.com>
src/vppinfra/linux/mem.c

index 350ccf8..c4973a6 100644 (file)
@@ -194,7 +194,7 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a)
     }
 
   if (fd != -1)
-    if ((ftruncate (fd, a->size)) == -1)
+    if ((ftruncate (fd, n_pages * (1 << log2_page_size))) == -1)
       {
        err = clib_error_return_unix (0, "ftruncate");
        goto error;