From 08d01376de5abf2e93c562ee5e24cf62ce1be3ff Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Ganne?= Date: Wed, 22 Apr 2020 09:02:48 +0200 Subject: [PATCH] misc: asan: do not poison memory after munmap() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/plugins/perfmon/perfmon_periodic.c | 2 -- src/vlibmemory/vlib_api_cli.c | 5 ----- src/vppinfra/mem.h | 1 - 3 files changed, 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 * -- 2.16.6