From 1557d9a30dace17c5254d8abc5fad98776fef4c6 Mon Sep 17 00:00:00 2001 From: Benoît Ganne Date: Fri, 7 Feb 2020 11:58:16 +0100 Subject: misc: address sanitizer: fix vm instrumentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Type: fix Change-Id: Ifd61c0683c85fe7340965c225ed23e46ec88e01a Signed-off-by: Benoît Ganne --- src/vppinfra/linux/mem.c | 2 ++ src/vppinfra/mem.h | 7 +++++++ 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/vppinfra/linux/mem.c b/src/vppinfra/linux/mem.c index 407e923fb78..69ac871567c 100644 --- a/src/vppinfra/linux/mem.c +++ b/src/vppinfra/linux/mem.c @@ -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; } diff --git a/src/vppinfra/mem.h b/src/vppinfra/mem.h index 5492e106d91..c00c78ad9a4 100644 --- a/src/vppinfra/mem.h +++ b/src/vppinfra/mem.h @@ -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; } -- cgit 1.2.3-korg