From b32d842687109a561d880655270fa46c8df06ceb Mon Sep 17 00:00:00 2001 From: Florian Mayer Date: Fri, 30 Sep 2022 16:30:21 -0700 Subject: [PATCH] [MTE] do not show notification for persistent MTE Depends on https://r.android.com/2224809, but does not harm (but doesn't work) if submitted earlier. Test: mte on in bootloader, boot, no notification Change-Id: Id1e6903d658e5fc83caea2710b4ae7559e455cce --- .../com/android/server/am/ActivityManagerService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 7d85c1333b1b3..480bddbb41c9f 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5329,7 +5329,14 @@ public class ActivityManagerService extends IActivityManager.Stub } private void showMteOverrideNotificationIfActive() { - if (!SystemProperties.getBoolean("ro.arm64.memtag.bootctl_supported", false) + String bootctl = SystemProperties.get("arm64.memtag.bootctl"); + // If MTE is on, there is one in three cases: + // * a fullmte build: ro.arm64.memtag.bootctl_supported is not set + // * memtag: arm64.memtag.bootctl contains "memtag" + // * memtag-once + // In the condition below we detect memtag-once by exclusion. + if (Arrays.asList(bootctl.split(",")).contains("memtag") + || !SystemProperties.getBoolean("ro.arm64.memtag.bootctl_supported", false) || !com.android.internal.os.Zygote.nativeSupportsMemoryTagging()) { return; }