In Android 13 wird ein ABI für den Userspace eingeführt, um den angeforderten MTE-Modus an den Bootloader zu senden. So können Sie MTE auf Geräten aktivieren, die Hardwareunterstützung haben, aber nicht standardmäßig mit MTE ausgeliefert werden, oder MTE auf Geräten deaktivieren, die standardmäßig mit MTE ausgeliefert werden.
Bootloader-Unterstützung
Zur Unterstützung dieser ABI muss der Bootloader die misc_memtag_message
(definiert in
bootloader_message.h) aus der Partition misc
lesen.
Wenn eine gültige 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 Memtag der SKU. Wenn memtag
wahr ist, richtet der Bootloader eine MTE-Tag-Reservierung ein, aktiviert Tag-Prüfungen in den niedrigeren Ausnahmeebenen und kommuniziert den für das Tag reservierten Bereich über DT an den Kernel. Wenn memtag
auf „false“ gesetzt ist, hängt der Bootloader „arm64.nomte“ an die Kernel-Befehlszeile an.
Wenn memtag_kernel
wahr ist, hängt der Bootloader kasan=on
an die Kernel-Befehlszeile an.
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 durch „An“ MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
auf (1, 0, 0)
und durch „Aus“ auf (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 Userspace-Unterstützung erstellt wird. Legen Sie dann die Systemeigenschaft ro.arm64.memtag.bootctl_supported
fest, um dem System zu signalisieren, dass Ihr Bootloader die Memtag-Nachricht unterstützt.
Benutzeroberfläche
Wenn die Eigenschaftro.arm64.memtag.bootctl_supported
festgelegt ist, kann der 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.

Systemeigenschaft
Für die erweiterte Verwendung kann die Systemeigenschaft arm64.memtag.bootctl
eine durch Kommas getrennte Liste der folgenden Werte enthalten:
-
memtag:MTE im Userspace dauerhaft aktivieren (
MISC_MEMTAG_MODE_MEMTAG
festlegen) -
memtag-once:MTE im Nutzerbereich einmal aktivieren (
MISC_MEMTAG_MODE_MEMTAG_ONCE
festlegen) -
memtag-kernel:MTE im Kernelbereich aktivieren (
MISC_MEMTAG_MODE_MEMTAG_KERNEL
festlegen) -
memtag-kernel-once:MTE im Kernelbereich 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.