[compiler-rt] 6fe4621 - [NFC][HWASAN] Use InternalAlloc for ThreadStartArg

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Mon May 8 16:33:39 PDT 2023


Author: Vitaly Buka
Date: 2023-05-08T16:33:30-07:00
New Revision: 6fe46219631fda60e2dc25ca285f30957ba6d3c7

URL: https://github.com/llvm/llvm-project/commit/6fe46219631fda60e2dc25ca285f30957ba6d3c7
DIFF: https://github.com/llvm/llvm-project/commit/6fe46219631fda60e2dc25ca285f30957ba6d3c7.diff

LOG: [NFC][HWASAN] Use InternalAlloc for ThreadStartArg

Added: 
    

Modified: 
    compiler-rt/lib/hwasan/hwasan_interceptors.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/hwasan/hwasan_interceptors.cpp b/compiler-rt/lib/hwasan/hwasan_interceptors.cpp
index 3854ad62f41a..096bfe5b1864 100644
--- a/compiler-rt/lib/hwasan/hwasan_interceptors.cpp
+++ b/compiler-rt/lib/hwasan/hwasan_interceptors.cpp
@@ -53,7 +53,7 @@ static void *HwasanThreadStartFunc(void *arg) {
   __hwasan_thread_enter();
   ThreadStartArg A = *reinterpret_cast<ThreadStartArg *>(arg);
   SetSigProcMask(&A.starting_sigset_, nullptr);
-  UnmapOrDie(arg, GetPageSizeCached());
+  InternalFree(arg);
   return A.callback(A.param);
 }
 
@@ -61,8 +61,7 @@ INTERCEPTOR(int, pthread_create, void *th, void *attr,
             void *(*callback)(void *), void *param) {
   EnsureMainThreadIDIsCorrect();
   ScopedTaggingDisabler tagging_disabler;
-  ThreadStartArg *A = reinterpret_cast<ThreadStartArg *>(
-      MmapOrDie(GetPageSizeCached(), "pthread_create"));
+  ThreadStartArg *A = (ThreadStartArg *)InternalAlloc(sizeof(ThreadStartArg));
   A->callback = callback;
   A->param = param;
   ScopedBlockSignals block(&A->starting_sigset_);
@@ -70,7 +69,10 @@ INTERCEPTOR(int, pthread_create, void *th, void *attr,
 #    if CAN_SANITIZE_LEAKS
   __lsan::ScopedInterceptorDisabler lsan_disabler;
 #    endif
-  return REAL(pthread_create)(th, attr, &HwasanThreadStartFunc, A);
+  int result = REAL(pthread_create)(th, attr, &HwasanThreadStartFunc, A);
+  if (result != 0)
+    InternalFree(A);
+  return result;
 }
 
 INTERCEPTOR(int, pthread_join, void *t, void **arg) {


        


More information about the llvm-commits mailing list