Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17de8898 authored by Mitch Phillips's avatar Mitch Phillips
Browse files

[MTE] Enable ASYNC MTE in the Zygote.

This allows applications to turn on MTE. The current design of MTE
inside of Scudo doesn't allow us to late-enable MTE (but we can
late-disable it). Thus, we have to enable tagging in the Zygote in order
to allow apps and the system_server to control their own MTE behaviour.

We intentionally use ASYNC mode so that we don't waste memory collecting
stack traces from the zygote pre-fork. Given that the zygote is mostly
Java code, the process itself should be pretty low risk for memory
corruption.

Bug: 135772972
Bug: 172365548
Test: On FVP: atest -s localhost:5555 \
com.android.cts.tagging.TaggingSdk30Test#testMemoryTagChecksCompatFeatureEnabled \
com.android.cts.tagging.TaggingSdk30Test#testMemoryTagChecksCompatFeatureDisabled

Change-Id: I9da2c33cb6022033264f443308d5508b3ff8da9e
parent 5be93c28
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -62,4 +62,13 @@ cc_binary {
    // Create a symlink from app_process to app_process32 or 64
    // depending on the target configuration.
    symlink_preferred_arch: true,

    // Enable ASYNC MTE in the zygote, in order to allow apps and the system
    // server to use MTE. We use ASYNC because we don't expect the pre-fork
    // zygote to have substantial memory corruption bugs (as it's primarily Java
    // code), and we don't want to waste memory recording malloc/free stack
    // traces (which happens in SYNC mode).
    sanitize: {
        memtag_heap: true,
    },
}