Correct address calculation for VPP-1168 32/11032/2
authorLee Roberts <lee.roberts@hpe.com>
Thu, 8 Mar 2018 02:47:00 +0000 (19:47 -0700)
committerDamjan Marion <dmarion.lists@gmail.com>
Fri, 9 Mar 2018 19:43:48 +0000 (19:43 +0000)
Use (u64) cast to ensure proper address calculations.

Change-Id: I6bad50010b140189f1b0af177e55da0045bd7a93
Signed-off-by: Lee Roberts <lee.roberts@hpe.com>
src/vlib/linux/physmem.c
src/vppinfra/linux/mem.c

index 1a44992..b247efc 100644 (file)
@@ -163,7 +163,7 @@ unix_physmem_region_alloc (vlib_main_t * vm, char *name, u32 size,
 
   for (i = 0; i < pr->n_pages; i++)
     {
-      void *ptr = pr->mem + (i << pr->log2_page_size);
+      void *ptr = pr->mem + ((u64) i << pr->log2_page_size);
       int node;
       if ((move_pages (0, 1, &ptr, 0, &node, 0) == 0) && (numa_node != node))
        {
index 75d2a7e..475e3dc 100644 (file)
@@ -198,7 +198,7 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a)
     }
 
   if (fd != -1)
-    if ((ftruncate (fd, n_pages * (1 << log2_page_size))) == -1)
+    if ((ftruncate (fd, (u64) n_pages * (1 << log2_page_size))) == -1)
       {
        err = clib_error_return_unix (0, "ftruncate");
        goto error;