Provide page-aligned length to ftruncate. 36/10436/2
authorIgor Mikhailov (imichail) <[email protected]>
Mon, 5 Feb 2018 20:09:36 +0000 (12:09 -0800)
committerJohn Lo <[email protected]>
Thu, 8 Feb 2018 01:04:18 +0000 (01:04 +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) <[email protected]>
(cherry picked from commit 7d25415a9384d4c3d786d0c1ae5c0fcff3112acd)

src/vppinfra/linux/mem.c

index 2d8f593..0bc0878 100644 (file)
@@ -167,7 +167,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;