Android 13 presenta una ABI para el espacio de usuario para comunicar el modo MTE solicitado al bootloader. Se puede usar para habilitar MTE en dispositivos que admiten hardware, pero que no se envían con MTE habilitada de forma predeterminada, o para inhabilitar MTE en dispositivos que sí se envían con ella.
Compatibilidad con el bootloader
Para admitir esta ABI, el bootloader debe leer el misc_memtag_message
(definido en
bootloader_message.h) de la partición misc
.
Si se encuentra un misc_memtag_message
válido (MISC_VIRTUAL_AB_MAGIC_HEADER
coincide y el número de versión es compatible), el bootloader calcula
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
es la configuración predeterminada de activación o desactivación de la memtag para el SKU. Si memtag
es verdadero, el bootloader configura la reserva de etiquetas de MTE, habilita las verificaciones de etiquetas en los niveles de excepción más bajos y comunica la región reservada de etiquetas al kernel a través de DT. Si memtag
es falso, el bootloader agrega arm64.nomte a la línea de comandos del kernel.
Si memtag_kernel
es verdadero, el bootloader agrega kasan=on
a la línea de comandos del kernel.
El bootloader DEBE borrar MISC_MEMTAG_MODE_MEMTAG_ONCE
y MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
en cada inicio.
Si el bootloader admite fastboot oem mte
, on establece MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
en (1, 0, 0)
y off en (0, 0, 1)
, mientras se conservan las otras marcas.
Debes configurar tu producto para compilar el binario mtectrl
para la compatibilidad con el espacio de usuario. Luego, establece la propiedad del sistema ro.arm64.memtag.bootctl_supported
para indicarle al sistema que tu bootloader admite el mensaje de memtag.
Interfaz de usuario
Cuando se establece la propiedadro.arm64.memtag.bootctl_supported
, un botón en el menú de Opciones para desarrolladores le permite al usuario reiniciar el dispositivo una vez con MTE habilitada. El público objetivo son los desarrolladores de apps que desean probar sus apps con MTE.

Propiedad del sistema
Para el uso avanzado, la propiedad del sistema arm64.memtag.bootctl
puede aceptar una lista separada por comas de los siguientes valores:
-
memtag: Habilita de forma persistente MTE en el espacio del usuario (establece
MISC_MEMTAG_MODE_MEMTAG
). -
memtag-once: Habilita MTE en el espacio de usuario una vez (establece
MISC_MEMTAG_MODE_MEMTAG_ONCE
). -
memtag-kernel: Habilita MTE en el espacio del kernel (establece
MISC_MEMTAG_MODE_MEMTAG_KERNEL
). -
memtag-kernel-once: Habilita MTE en el espacio del kernel una vez (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
). -
memtag-off: Inhabilita MTE (establece
MISC_MEMTAG_MODE_MEMTAG_OFF
).
El sistema debe reiniciarse para que se aplique el nuevo parámetro de configuración (ya que el bootloader lo aplica).