[compiler-rt] c1903ba - [hwasan] Move RunFreeHooks call

Jin Xin Ng via llvm-commits llvm-commits at lists.llvm.org
Tue May 23 10:03:04 PDT 2023


Author: Jin Xin Ng
Date: 2023-05-23T17:02:51Z
New Revision: c1903ba5eacd2dd8880077b5ba6449c1102de55c

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

LOG: [hwasan] Move RunFreeHooks call

Ensures a subsequent call (via an external caller) to
__sanitizer_get_allocated_size via hooks will return a valid size.

This allows a faster version of __sanitizer_get_allocated_size
to be implemented, which can skip checks.

Test to ensure RunFreeHooks' call order will come with
__sanitizer_get_allocated_size_fast

Differential Revision: https://reviews.llvm.org/D151151

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/hwasan/hwasan_allocator.cpp b/compiler-rt/lib/hwasan/hwasan_allocator.cpp
index 3b59741df6e36..e43c0990c55fc 100644
--- a/compiler-rt/lib/hwasan/hwasan_allocator.cpp
+++ b/compiler-rt/lib/hwasan/hwasan_allocator.cpp
@@ -288,8 +288,6 @@ static bool CheckInvalidFree(StackTrace *stack, void *untagged_ptr,
 
 static void HwasanDeallocate(StackTrace *stack, void *tagged_ptr) {
   CHECK(tagged_ptr);
-  RunFreeHooks(tagged_ptr);
-
   void *untagged_ptr = UntagPtr(tagged_ptr);
 
   if (CheckInvalidFree(stack, untagged_ptr, tagged_ptr))
@@ -304,6 +302,9 @@ static void HwasanDeallocate(StackTrace *stack, void *tagged_ptr) {
     ReportInvalidFree(stack, reinterpret_cast<uptr>(tagged_ptr));
     return;
   }
+
+  RunFreeHooks(tagged_ptr);
+
   uptr orig_size = meta->GetRequestedSize();
   u32 free_context_id = StackDepotPut(*stack);
   u32 alloc_context_id = meta->GetAllocStackId();


        


More information about the llvm-commits mailing list