Android 13 introduce un'ABI per lo spazio utente per comunicare la modalità MTE richiesta al bootloader. Può essere utilizzato per attivare MTE sui dispositivi che hanno il supporto hardware ma non vengono forniti con MTE attivato per impostazione predefinita oppure per disattivare MTE sui dispositivi che vengono forniti con questa funzionalità.
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_VIRTUAL_AB_MAGIC_HEADER
corrisponde e il numero di versione è supportato),
il bootloader calcola
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 dei tag MTE,
attiva i controlli dei tag nei livelli di eccezione inferiori e
comunica la regione riservata ai tag al kernel tramite DT. Se
memtag
è false, il 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
, imposta
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
su
(1, 0, 0)
e off su (0, 0, 1)
, mantenendo
gli altri flag.
Devi configurare il prodotto per creare il binario mtectrl
per il supporto dello spazio utente. Quindi, 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, un
pulsante nel menu Opzioni sviluppatore consente all'utente di riavviare una volta con MTE
abilitato. Il pubblico di destinazione è costituito dagli sviluppatori di app che vogliono testare
le loro app con 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:
-
memtag: attiva in modo permanente MTE nello spazio utente (imposta
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once: attiva MTE nello spazio utente una sola volta (imposta
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel: attiva MTE nello spazio kernel (imposta
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once: attiva MTE nello spazio kernel una sola volta
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: disabilita MTE (imposta
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Per rendere effettiva la nuova impostazione, è necessario riavviare il sistema (in quanto viene applicata dal bootloader).