Android 13 introduce un'ABI per lo spazio utente per comunicare la modalità MTE richiesta al bootloader. Questo può essere utilizzato per abilitare MTE sui dispositivi che dispongono di supporto hardware ma non vengono forniti con MTE abilitato per impostazione predefinita o per disabilitare MTE sui dispositivi che vengono forniti con esso.
Supporto per il bootloader
Per supportare questa ABI, il tuo 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 di attivazione/disattivazione del memtag predefinita per lo SKU. Se memtag
è true, il bootloader configura la prenotazione dei tag MTE, abilita i controlli dei tag nei livelli di eccezione inferiori e comunica la regione riservata dei tag al kernel tramite DT. Se memtag
è false, il bootloader aggiunge arm64.nomte alla riga di comando del kernel.
Se memtag_kernel
è vero, il bootloader aggiunge kasan=on
alla riga di comando del kernel.
Il bootloader DEVE cancellare MISC_MEMTAG_MODE_MEMTAG_ONCE
e MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
ad ogni avvio.
Se il bootloader supporta fastboot oem mte
, on imposta MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
su (1, 0, 0)
e off su (0, 0, 1)
, preservando gli altri flag.
Dovresti configurare il tuo 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 tuo bootloader supporta il messaggio memtag.
Interfaccia utente
Quando è impostata la proprietàro.arm64.memtag.bootctl_supported
, un pulsante nel menu Opzioni sviluppatore consente all'utente di riavviare una volta con MTE abilitato. Il pubblico target sono gli sviluppatori di app che desiderano testare le proprie app con MTE. Proprietà del sistema
Per un uso avanzato, la proprietà di sistema arm64.memtag.bootctl
può accettare un elenco separato da virgole dei seguenti valori:
- memtag: abilita permanentemente MTE dello spazio utente (imposta
MISC_MEMTAG_MODE_MEMTAG
) - memtag-once: abilita MTE nello spazio utente una volta (imposta
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: abilita MTE nello spazio kernel (imposta
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: abilita kernel-space MTE una volta (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: disabilita MTE (imposta
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Il sistema deve essere riavviato affinché la nuova impostazione abbia effetto (poiché viene applicata dal bootloader).