[llvm-branch-commits] [compiler-rt] [sanitizer] Add MemCpyAccessible (PR #112794)

Vitaly Buka via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Oct 17 16:49:46 PDT 2024


https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/112794

>From 7e8937dd9c1a5895be178de0d7721cc3ed23b395 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at google.com>
Date: Thu, 17 Oct 2024 16:49:32 -0700
Subject: [PATCH] fixes

Created using spr 1.3.4
---
 .../lib/sanitizer_common/sanitizer_common.h        |  2 +-
 .../sanitizer_common/sanitizer_common_libcdep.cpp  | 14 +++++++-------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
index a7b6a4033a5276..dd55f91dd95d06 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
@@ -273,7 +273,7 @@ bool IsAccessibleMemoryRange(uptr beg, uptr size);
 // Returns true if we can read a memory range starting at `src`, and copies
 // content into `dest`.
 bool TryMemCpy(void *dest, const void *src, uptr n);
-// Copies accesible memory, and zero fill the rest.
+// Copies accessible memory, and zero fill the rest.
 void MemCpyAccessible(void *dest, const void *src, uptr n);
 
 // Error report formatting.
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
index 3ad5aaa0a7d4ab..a2b10001843a42 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_libcdep.cpp
@@ -230,18 +230,18 @@ void MemCpyAccessible(void *dest, const void *src, uptr n) {
   uptr e = reinterpret_cast<uptr>(src) + n;
   uptr e_down = RoundDownTo(e, page_size);
 
-  auto copy_or_zero = [dest, src](uptr b, uptr e) {
-    uptr d = reinterpret_cast<uptr>(dest) + (b - reinterpret_cast<uptr>(src));
-    if (!TryMemCpy(reinterpret_cast<void *>(d), reinterpret_cast<void *>(b),
-                   e - b))
-      internal_memset(reinterpret_cast<void *>(d), 0, e - b);
+  const uptr off = reinterpret_cast<uptr>(dest) - b;
+
+  auto copy_or_zero = [off](uptr beg, uptr end) {
+    void *d = reinterpret_cast<void *>(beg + off);
+    const uptr size = end - beg;
+    if (!TryMemCpy(d, reinterpret_cast<void *>(beg), size))
+      internal_memset(d, 0, size);
   };
 
   copy_or_zero(b, b_up);
-
   for (uptr p = b_up; p < e_down; p += page_size)
     copy_or_zero(p, p + page_size);
-
   copy_or_zero(e_down, e);
 }
 



More information about the llvm-branch-commits mailing list