In Android 13 wird ein ABI für den Nutzerbereich eingeführt, um den angeforderten MTE-Modus an den Bootloader zu kommunizieren. Damit kann MTE auf Geräten aktiviert werden, die Hardwareunterstützung dafür bieten, aber standardmäßig nicht mit aktiviertem MTE ausgeliefert werden. Außerdem kann MTE auf Geräten deaktiviert werden, die damit ausgeliefert werden.
Bootloader-Unterstützung
Zur Unterstützung dieses ABI muss Ihr Bootloader misc_memtag_message
(definiert in
bootloader_message.h) aus der Partition misc
lesen.
Wenn ein gültiges misc_memtag_message
gefunden wird (MISC_VIRTUAL_AB_MAGIC_HEADER
stimmt überein und die Versionsnummer wird unterstützt), berechnet der Bootloader
memtag = (default_memtag && !(misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_OFF)) || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
ist die Standardeinstellung für das Ein- und Ausschalten von Memtags für die Artikelnummer. Wenn memtag
auf „true“ gesetzt ist, richtet der Bootloader die MTE-Tag-Reservierung ein, aktiviert Tag-Prüfungen auf den unteren Ausnahmeebenen und teilt dem Kernel die reservierte Tag-Region über den Gerätebaum (Device Tree, DT) mit. Wenn memtag
auf „false“ gesetzt ist, hängt der Bootloader „arm64.nomte“ an die Kernel-Befehlszeile an.
Wenn memtag_kernel
„true“ ist, hängt der Bootloader kasan=on
an die Kernel-Befehlszeile an. Andernfalls wird kasan=off
angehängt.
Der Bootloader MUSS MISC_MEMTAG_MODE_MEMTAG_ONCE
und MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
bei jedem Start löschen.
Wenn der Bootloader fastboot oem mte
unterstützt, wird MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
auf (1, 0, 0)
und (0, 0, 1)
gesetzt, während die anderen Flags beibehalten werden.
Sie sollten Ihr Produkt so konfigurieren, dass die mtectrl
-Binärdatei für die Unterstützung des Nutzerbereichs erstellt wird. Legen Sie dann das Systemattribut ro.arm64.memtag.bootctl_supported
fest, um dem System mitzuteilen, dass Ihr Bootloader die memtag-Nachricht unterstützt.
Benutzeroberfläche
Wenn die Eigenschaftro.arm64.memtag.bootctl_supported
festgelegt ist, können Nutzer über eine Schaltfläche im Menü „Entwickleroptionen“ einmal mit aktiviertem MTE neu starten. Die Zielgruppe sind App-Entwickler, die ihre Apps mit MTE testen möchten.

Systemattribut
Für die erweiterte Verwendung kann die Systemeigenschaft arm64.memtag.bootctl
eine durch Kommas getrennte Liste der folgenden Werte enthalten:
-
memtag: MTE im Nutzerbereich dauerhaft aktivieren (
MISC_MEMTAG_MODE_MEMTAG
festlegen) -
memtag-once:Aktiviert MTE im Nutzerbereich einmalig (setzt
MISC_MEMTAG_MODE_MEMTAG_ONCE
). -
memtag-kernel:MTE im Kernel-Bereich aktivieren (set
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once:MTE im Kernel-Bereich einmal aktivieren
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off:MTE deaktivieren (
MISC_MEMTAG_MODE_MEMTAG_OFF
festlegen)
Das System muss neu gestartet werden, damit die neue Einstellung wirksam wird, da sie vom Bootloader angewendet wird.