misc: address sanitizer: fix vm instrumentation 54/24854/1
authorBenoît Ganne <bganne@cisco.com>
Fri, 7 Feb 2020 10:58:16 +0000 (11:58 +0100)
committerBenoît Ganne <bganne@cisco.com>
Fri, 7 Feb 2020 11:00:48 +0000 (12:00 +0100)
Type: fix

Change-Id: Ifd61c0683c85fe7340965c225ed23e46ec88e01a
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vppinfra/linux/mem.c
src/vppinfra/mem.h

index 407e923..69ac871 100644 (file)
@@ -321,6 +321,7 @@ clib_mem_vm_ext_alloc (clib_mem_vm_alloc_t * a)
   a->n_pages = n_pages;
   a->addr = addr;
   a->fd = fd;
+  CLIB_MEM_UNPOISON (addr, a->size);
   goto done;
 
 error:
@@ -398,6 +399,7 @@ clib_mem_vm_ext_map (clib_mem_vm_map_t * a)
     return clib_error_return_unix (0, "mmap");
 
   a->addr = addr;
+  CLIB_MEM_UNPOISON (addr, a->size);
   return 0;
 }
 
index 5492e10..c00c78a 100644 (file)
@@ -363,6 +363,8 @@ clib_mem_vm_alloc (uword size)
   mmap_addr = mmap (0, size, PROT_READ | PROT_WRITE, flags, -1, 0);
   if (mmap_addr == (void *) -1)
     mmap_addr = 0;
+  else
+    CLIB_MEM_UNPOISON (mmap_addr, size);
 
   return mmap_addr;
 }
@@ -371,6 +373,7 @@ always_inline void
 clib_mem_vm_free (void *addr, uword size)
 {
   munmap (addr, size);
+  CLIB_MEM_POISON (addr, size);
 }
 
 always_inline void *
@@ -386,6 +389,8 @@ clib_mem_vm_unmap (void *addr, uword size)
   mmap_addr = mmap (addr, size, PROT_NONE, flags, -1, 0);
   if (mmap_addr == (void *) -1)
     mmap_addr = 0;
+  else
+    CLIB_MEM_UNPOISON (mmap_addr, size);
 
   return mmap_addr;
 }
@@ -399,6 +404,8 @@ clib_mem_vm_map (void *addr, uword size)
   mmap_addr = mmap (addr, size, (PROT_READ | PROT_WRITE), flags, -1, 0);
   if (mmap_addr == (void *) -1)
     mmap_addr = 0;
+  else
+    CLIB_MEM_UNPOISON (mmap_addr, size);
 
   return mmap_addr;
 }