X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fsvm%2Fsvm.c;h=fc917825be6b0832189dc74a8a5b3e37d879f57c;hb=refs%2Fchanges%2F63%2F28863%2F2;hp=c702625db7e3ea1aa0bd3b8eb89e869d779cf740;hpb=2c8e0023f91882e53f06eb99c901b97fe013f981;p=vpp.git diff --git a/src/svm/svm.c b/src/svm/svm.c index c702625db7e..fc917825be6 100644 --- a/src/svm/svm.c +++ b/src/svm/svm.c @@ -107,7 +107,7 @@ region_lock (svm_region_t * rp, int tag) rp->mutex_owner_pid = getpid (); rp->mutex_owner_tag = tag; #endif - ASSERT (nheld < MAXLOCK); + ASSERT (nheld < MAXLOCK); //NOSONAR /* * Keep score of held mutexes so we can try to exit * cleanly if the world comes to an end at the worst possible @@ -329,7 +329,8 @@ svm_data_region_create (svm_map_region_args_t * a, svm_region_t * rp) return -3; } close (fd); - rp->backing_file = (char *) format (0, "%s\0", a->backing_file); + CLIB_MEM_UNPOISON (rp->data_base, map_size); + rp->backing_file = (char *) format (0, "%s%c", a->backing_file, 0); 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); + CLIB_MEM_UNPOISON (rp->data_base, map_size); } return 0; } @@ -607,6 +609,7 @@ svm_map_region (svm_map_region_args_t * a) return (0); } close (svm_fd); + CLIB_MEM_UNPOISON (rp, a->size); 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_MEM_UNPOISON (rp, MMAP_PAGESIZE); + /* * 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); + CLIB_MEM_UNPOISON (rp, a->size); + if ((uword) rp != rp->virtual_base) { clib_warning ("mmap botch"); @@ -746,7 +754,7 @@ svm_map_region (svm_map_region_args_t * a) return ((void *) rp); } - return 0; /* NOTREACHED */ + return 0; /* NOTREACHED *///NOSONAR } static void @@ -755,7 +763,7 @@ svm_mutex_cleanup (void) int i; for (i = 0; i < nheld; i++) { - pthread_mutex_unlock (mutexes_held[i]); + pthread_mutex_unlock (mutexes_held[i]); //NOSONAR } } @@ -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 */ + 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) @@ -1174,6 +1183,7 @@ svm_region_exit_internal (u8 is_client) 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)