aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoît Ganne <bganne@cisco.com>2020-04-22 09:02:48 +0200
committerDave Barach <openvpp@barachs.net>2020-04-22 13:03:08 +0000
commit08d01376de5abf2e93c562ee5e24cf62ce1be3ff (patch)
tree5ff125fbf2d79ef432f9f56041fb76e4c00a6fcb
parent74ee18b0b33aad974705ae16739a86c48f3b966b (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.c2
-rwxr-xr-xsrc/vlibmemory/vlib_api_cli.c5
-rw-r--r--src/vppinfra/mem.h1
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 *