From 78e70cee0d46bb14dcbedec993fbf855a4d13266 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Wed, 30 Jun 2021 23:39:12 -0700 Subject: [PATCH] [scudo] Remove false DCHECK MTE Cache.store passes MAP_NOACCESS here. Reviewed By: pcc, cryptoad Differential Revision: https://reviews.llvm.org/D105266 --- compiler-rt/lib/scudo/standalone/linux.cpp | 5 +---- compiler-rt/lib/scudo/standalone/tests/secondary_test.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler-rt/lib/scudo/standalone/linux.cpp b/compiler-rt/lib/scudo/standalone/linux.cpp index dedab61631bc..c77c1bb600d9 100644 --- a/compiler-rt/lib/scudo/standalone/linux.cpp +++ b/compiler-rt/lib/scudo/standalone/linux.cpp @@ -58,11 +58,8 @@ void *map(void *Addr, uptr Size, UNUSED const char *Name, uptr Flags, if (Flags & MAP_MEMTAG) MmapProt |= PROT_MTE; #endif - if (Addr) { - // Currently no scenario for a noaccess mapping with a fixed address. - DCHECK_EQ(Flags & MAP_NOACCESS, 0); + if (Addr) MmapFlags |= MAP_FIXED; - } void *P = mmap(Addr, Size, MmapProt, MmapFlags, -1, 0); if (P == MAP_FAILED) { if (!(Flags & MAP_ALLOWNOMEM) || errno != ENOMEM) diff --git a/compiler-rt/lib/scudo/standalone/tests/secondary_test.cpp b/compiler-rt/lib/scudo/standalone/tests/secondary_test.cpp index 6b8a60d386b8..d3b7c486f7c3 100644 --- a/compiler-rt/lib/scudo/standalone/tests/secondary_test.cpp +++ b/compiler-rt/lib/scudo/standalone/tests/secondary_test.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// +#include "memtag.h" #include "tests/scudo_unit_test.h" #include "allocator_config.h" @@ -20,7 +21,11 @@ #include template static scudo::Options getOptionsForConfig() { - return {}; + if (!Config::MaySupportMemoryTagging || !scudo::archSupportsMemoryTagging()) + return {}; + scudo::AtomicOptions AO; + AO.set(scudo::OptionBit::UseMemoryTagging); + return AO.load(); } template static void testSecondaryBasic(void) {