diff --git a/lib/scudo/standalone/combined.h b/lib/scudo/standalone/combined.h
index 6b0cf87..365720d 100644
--- a/lib/scudo/standalone/combined.h
+++ b/lib/scudo/standalone/combined.h
@@ -560,16 +560,7 @@
       }
     }
 
-    // Try to detect deallocation with a wrong MTE tag by touching the first
-    // byte with a correctly tagged pointer. Skip zero-sized allocations that do
-    // not always store the correct tag value anywhere (for example, a zero
-    // size, 32 byte aligned allocation in a 32-byte size class will end up with
-    // header at offset 16 in the block, payload at offset 32, and no space to
-    // store the tag).
     const uptr Size = getSize(Ptr, &Header);
-    if (useMemoryTagging<Params>(Options) && Size != 0)
-      *reinterpret_cast<volatile char *>(TaggedPtr);
-
     if (DeleteSize && Options.get(OptionBit::DeleteSizeMismatch)) {
       if (UNLIKELY(DeleteSize != Size))
         reportDeleteSizeMismatch(Ptr, DeleteSize, Size);
diff --git a/lib/scudo/standalone/tests/combined_test.cpp b/lib/scudo/standalone/tests/combined_test.cpp
index 58d444d..7d5cacd 100644
--- a/lib/scudo/standalone/tests/combined_test.cpp
+++ b/lib/scudo/standalone/tests/combined_test.cpp
@@ -395,27 +395,6 @@
   }
 }
 
-SCUDO_TYPED_TEST(ScudoCombinedDeathTest, FreeWithTagMismatch) {
-  auto *Allocator = this->Allocator.get();
-
-  if (!Allocator->useMemoryTaggingTestOnly())
-    return;
-
-  // Check that double free is detected.
-  for (scudo::uptr SizeLog = 0U; SizeLog <= 20U; SizeLog++) {
-    const scudo::uptr Size = 1U << SizeLog;
-    EXPECT_DEATH(
-        {
-          disableDebuggerdMaybe();
-          void *P = Allocator->allocate(Size, Origin);
-          scudo::uptr NewTag = (scudo::extractTag(reinterpret_cast<scudo::uptr>(P)) + 1) % 16;
-          void *Q = scudo::addFixedTag(scudo::untagPointer(P), NewTag);
-          Allocator->deallocate(Q, Origin);
-        },
-        "");
-  }
-}
-
 SCUDO_TYPED_TEST(ScudoCombinedDeathTest, DisableMemoryTagging) {
   auto *Allocator = this->Allocator.get();
 
