diff options
author | Benoît Ganne <bganne@cisco.com> | 2020-04-22 09:02:48 +0200 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2020-04-22 13:03:08 +0000 |
commit | 08d01376de5abf2e93c562ee5e24cf62ce1be3ff (patch) | |
tree | 5ff125fbf2d79ef432f9f56041fb76e4c00a6fcb | |
parent | 74ee18b0b33aad974705ae16739a86c48f3b966b (diff) |
misc: asan: do not poison memory after munmap()
It is a bad idea to poison memory after munmap because the address space
can be reused (eg. for global data of dlopen()ed object) and ASan model
allows access by default.
Moreover, access to a stale address space will fault.
Type: fix
Change-Id: I356de422f255447d9d50a3a71fb0c2eaa790d731
Signed-off-by: Benoît Ganne <bganne@cisco.com>
-rw-r--r-- | src/plugins/perfmon/perfmon_periodic.c | 2 | ||||
-rwxr-xr-x | src/vlibmemory/vlib_api_cli.c | 5 | ||||
-rw-r--r-- | src/vppinfra/mem.h | 1 |
3 files changed, 0 insertions, 8 deletions
diff --git a/src/plugins/perfmon/perfmon_periodic.c b/src/plugins/perfmon/perfmon_periodic.c index 8498419f36f..37d669b8d13 100644 --- a/src/plugins/perfmon/perfmon_periodic.c +++ b/src/plugins/perfmon/perfmon_periodic.c @@ -248,8 +248,6 @@ disable_events (perfmon_main_t * pm) if (munmap (pm->perf_event_pages[i][my_thread_index], pm->page_size) < 0) clib_unix_warning ("munmap"); - CLIB_MEM_POISON (pm->perf_event_pages[i][my_thread_index], - pm->page_size); pm->perf_event_pages[i][my_thread_index] = 0; } diff --git a/src/vlibmemory/vlib_api_cli.c b/src/vlibmemory/vlib_api_cli.c index c57f333ba68..5c9762ed70d 100755 --- a/src/vlibmemory/vlib_api_cli.c +++ b/src/vlibmemory/vlib_api_cli.c @@ -456,7 +456,6 @@ vl_msg_api_process_file (vlib_main_t * vm, u8 * filename, vlib_cli_output (vm, "Range (%d, %d) outside file range (0, %d)\n", first_index, last_index, nitems - 1); munmap (hp, file_size); - CLIB_MEM_POISON (hp, file_size); return; } if (hp->wrapped) @@ -507,7 +506,6 @@ vl_msg_api_process_file (vlib_main_t * vm, u8 * filename, { vlib_cli_output (vm, "Ugh: msg id %d no trace config\n", msg_id); munmap (hp, file_size); - CLIB_MEM_POISON (hp, file_size); return; } msg += size; @@ -539,7 +537,6 @@ vl_msg_api_process_file (vlib_main_t * vm, u8 * filename, { vlib_cli_output (vm, "Ugh: msg id %d no trace config\n", msg_id); munmap (hp, file_size); - CLIB_MEM_POISON (hp, file_size); vec_free (tmpbuf); am->replay_in_progress = 0; return; @@ -563,7 +560,6 @@ vl_msg_api_process_file (vlib_main_t * vm, u8 * filename, { vlib_cli_output (vm, "Ugh: msg id %d no endian swap\n", msg_id); munmap (hp, file_size); - CLIB_MEM_POISON (hp, file_size); vec_free (tmpbuf); am->replay_in_progress = 0; return; @@ -666,7 +662,6 @@ vl_msg_api_process_file (vlib_main_t * vm, u8 * filename, } munmap (hp, file_size); - CLIB_MEM_POISON (hp, file_size); vec_free (tmpbuf); am->replay_in_progress = 0; } diff --git a/src/vppinfra/mem.h b/src/vppinfra/mem.h index f254601043c..06694ccadeb 100644 --- a/src/vppinfra/mem.h +++ b/src/vppinfra/mem.h @@ -338,7 +338,6 @@ always_inline void clib_mem_vm_free (void *addr, uword size) { munmap (addr, size); - CLIB_MEM_POISON (addr, size); } always_inline void * |