Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
svm: asan: fix asan support
[vpp.git]
/
src
/
svm
/
svm.c
diff --git
a/src/svm/svm.c
b/src/svm/svm.c
index
6249a34
..
20f4b7a
100644
(file)
--- a/
src/svm/svm.c
+++ b/
src/svm/svm.c
@@
-329,6
+329,7
@@
svm_data_region_create (svm_map_region_args_t * a, svm_region_t * rp)
return -3;
}
close (fd);
return -3;
}
close (fd);
+ CLIB_MEM_UNPOISON (rp->data_base, map_size);
rp->backing_file = (char *) format (0, "%s\0", a->backing_file);
rp->flags |= SVM_FLAGS_FILE;
}
rp->backing_file = (char *) format (0, "%s\0", a->backing_file);
rp->flags |= SVM_FLAGS_FILE;
}
@@
-414,6
+415,7
@@
svm_data_region_map (svm_map_region_args_t * a, svm_region_t * rp)
return -3;
}
close (fd);
return -3;
}
close (fd);
+ CLIB_MEM_UNPOISON (rp->data_base, map_size);
}
return 0;
}
}
return 0;
}
@@
-607,6
+609,7
@@
svm_map_region (svm_map_region_args_t * a)
return (0);
}
close (svm_fd);
return (0);
}
close (svm_fd);
+ CLIB_MEM_UNPOISON (rp, a->size);
svm_region_init_mapped_region (a, rp);
svm_region_init_mapped_region (a, rp);
@@
-663,6
+666,9
@@
svm_map_region (svm_map_region_args_t * a)
clib_warning ("mmap");
return (0);
}
clib_warning ("mmap");
return (0);
}
+
+ CLIB_MEM_UNPOISON (rp, MMAP_PAGESIZE);
+
/*
* We lost the footrace to create this region; make sure
* the winner has crossed the finish line.
/*
* We lost the footrace to create this region; make sure
* the winner has crossed the finish line.
@@
-699,6
+705,8
@@
svm_map_region (svm_map_region_args_t * a)
close (svm_fd);
close (svm_fd);
+ CLIB_MEM_UNPOISON (rp, a->size);
+
if ((uword) rp != rp->virtual_base)
{
clib_warning ("mmap botch");
if ((uword) rp != rp->virtual_base)
{
clib_warning ("mmap botch");
@@
-1042,6
+1050,7
@@
svm_region_unmap_internal (void *rp_arg, u8 is_client)
oldheap = svm_push_pvt_heap (rp); /* nb vec_delete() in the loop */
/* Remove the caller from the list of mappers */
oldheap = svm_push_pvt_heap (rp); /* nb vec_delete() in the loop */
/* Remove the caller from the list of mappers */
+ CLIB_MEM_UNPOISON (rp->client_pids, vec_bytes (rp->client_pids));
for (i = 0; i < vec_len (rp->client_pids); i++)
{
if (rp->client_pids[i] == mypid)
for (i = 0; i < vec_len (rp->client_pids); i++)
{
if (rp->client_pids[i] == mypid)
@@
-1174,6
+1183,7
@@
svm_region_exit_internal (u8 is_client)
virtual_base = root_rp->virtual_base;
virtual_size = root_rp->virtual_size;
virtual_base = root_rp->virtual_base;
virtual_size = root_rp->virtual_size;
+ CLIB_MEM_UNPOISON (root_rp->client_pids, vec_bytes (root_rp->client_pids));
for (i = 0; i < vec_len (root_rp->client_pids); i++)
{
if (root_rp->client_pids[i] == mypid)
for (i = 0; i < vec_len (root_rp->client_pids); i++)
{
if (root_rp->client_pids[i] == mypid)