physmem coverity issues 86/15486/2
authorDamjan Marion <damarion@cisco.com>
Tue, 23 Oct 2018 20:54:40 +0000 (22:54 +0200)
committerDamjan Marion <dmarion@me.com>
Tue, 23 Oct 2018 22:14:04 +0000 (22:14 +0000)
Change-Id: Ie9ff9b751190632dfc4576e5cbb1987a4142af5e
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/vlib/buffer.c
src/vlib/physmem.c
src/vppinfra/pmalloc.c

index 2f15e65..22cf799 100644 (file)
@@ -860,7 +860,7 @@ vlib_buffer_register_physmem_map (vlib_main_t * vm, u32 physmem_map_index)
   vlib_buffer_pool_t *p;
   vlib_physmem_map_t *m = vlib_physmem_get_map (vm, physmem_map_index);
   uword start = pointer_to_uword (m->base);
-  uword size = m->n_pages << m->log2_page_size;
+  uword size = (uword) m->n_pages << m->log2_page_size;
 
   if (bm->buffer_mem_size == 0)
     {
index e2d8892..2599bce 100755 (executable)
@@ -39,7 +39,7 @@ vlib_physmem_shared_map_create (vlib_main_t * vm, char *name, uword size,
   clib_pmalloc_arena_t *a;
   clib_error_t *error = 0;
   void *va;
-  int i;
+  uword i;
 
   va = clib_pmalloc_create_shared_arena (pm, name, size, numa_node);
 
@@ -87,7 +87,7 @@ vlib_physmem_init (vlib_main_t * vm)
 
   /* check if pagemap is accessible */
   pt = clib_mem_vm_get_paddr (&pt, min_log2 (sysconf (_SC_PAGESIZE)), 1);
-  if (pt[0])
+  if (pt && pt[0])
     vpm->flags |= VLIB_PHYSMEM_MAIN_F_HAVE_PAGEMAP;
   vec_free (pt);
 
index d354cce..0f9df9c 100644 (file)
@@ -279,7 +279,7 @@ pmalloc_map_pages (clib_pmalloc_main_t * pm, clib_pmalloc_arena_t * a,
       goto error;
     }
 
-  memset (va, 0, n_pages << pm->log2_page_sz);
+  clib_memset (va, 0, n_pages << pm->log2_page_sz);
   sys_page_size = sysconf (_SC_PAGESIZE);
   pagemap_fd = open ((char *) "/proc/self/pagemap", O_RDONLY);
 
@@ -324,7 +324,8 @@ clib_pmalloc_create_shared_arena (clib_pmalloc_main_t * pm, char *name,
 {
   clib_pmalloc_arena_t *a;
   clib_pmalloc_page_t *pp;
-  u32 n_pages = round_pow2 (size, 1 << pm->log2_page_sz) >> pm->log2_page_sz;
+  u32 n_pages = round_pow2 (size, 1ULL << pm->log2_page_sz) >>
+    pm->log2_page_sz;
 
   if (n_pages + vec_len (pm->pages) > pm->max_pages)
     return 0;