Android 13 introduce un'ABI per lo spazio utente per comunicare la modalità MTE richiesta al bootloader. Puoi utilizzarlo per attivare MTE sui dispositivi che supportano l'hardware ma non vengono forniti con MTE attivato per impostazione predefinita oppure per disattivare MTE sui dispositivi che lo includono.
Supporto del bootloader
Per supportare questa ABI, il bootloader deve leggere
misc_memtag_message (definito in
bootloader_message.h) dalla partizione misc.
Se viene trovato un misc_memtag_message valido
(MISC_MEMTAG_MAGIC_HEADER corrisponde e il numero di versione è supportato),
il bootloader esegue il calcolo nel seguente modo:
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 è l'impostazione predefinita di attivazione/disattivazione del memtag per lo
SKU. Se memtag è true, il bootloader configura la prenotazione del tag MTE,
attiva i controlli dei tag nei livelli di eccezione inferiori e
comunica la regione riservata ai tag al kernel con il devicetree (DT). Se
memtag è false, l'app bootloader aggiunge
arm64.nomte alla riga di comando del kernel.
Se memtag_kernel è true, il bootloader aggiunge
kasan=on alla riga di comando del kernel. In caso contrario, aggiunge kasan=off.
Il bootloader deve cancellare MISC_MEMTAG_MODE_MEMTAG_ONCE e
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE a ogni avvio.
Se il bootloader supporta fastboot oem mte, l'argomento on deve impostare i flag
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} su
(1, 0, 0) e l'argomento off deve impostarli su (0, 0, 1),
preservando gli altri flag.
Configura il prodotto per creare il binario mtectrl per il supporto dello spazio utente.
e poi imposta la proprietà di sistema ro.arm64.memtag.bootctl_supported per indicare
al sistema che il bootloader supporta il messaggio memtag.
Interfaccia utente
Quando la proprietà ro.arm64.memtag.bootctl_supported è impostata, l'opzione Riavvia con
MTE nel menu Opzioni sviluppatore ti consente di riavviare una volta con
MTE attivato. Il pubblico di destinazione è costituito da sviluppatori di app che vogliono testare le proprie app con
MTE.

Figura 1. Opzione sviluppatore MTE.
Proprietà di sistema
Per un utilizzo avanzato, la proprietà di sistema
arm64.memtag.bootctl può accettare un elenco separato da virgole dei
seguenti valori:
-
memtagattiva in modo permanente MTE nello spazio utente (impostaMISC_MEMTAG_MODE_MEMTAG). -
memtag-onceattiva MTE nello spazio utente una volta (impostaMISC_MEMTAG_MODE_MEMTAG_ONCE). -
memtag-kernelabilita MTE nello spazio del kernel (impostaMISC_MEMTAG_MODE_MEMTAG_KERNEL). -
memtag-kernel-onceattiva MTE nello spazio del kernel una volta (impostaMISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE). -
memtag-offdisabilita MTE (impostaMISC_MEMTAG_MODE_MEMTAG_OFF).
L'impostazione viene applicata dal bootloader, quindi riavvia il sistema dopo aver apportato una modifica.