  Hardware-assisted memory protection features are increasingly being deployed
in COTS processors. ARMv8.5 Memory Tagging Extensions (MTE) is a recent
example, which has been used to provide probabilistic checks for memory safety.
This use of MTE is not secure against the standard adversary with arbitrary
read/write access to memory. Consequently MTE is used as a software development
tool. In this paper we present the first design for deterministic memory
protection using MTE that can resist the standard adversary, and hence is
suitable for post-deployment memory safety. We describe our compiler extensions
for LLVM Clang implementing static analysis and subsequent MTE instrumentation.
Via a comprehensive evaluation we show that our scheme is effective.
