Android 13 introduce una ABI para el espacio del usuario a fin de comunicar la información Modo MTE al bootloader. Esto se puede usar para habilitar MTE en dispositivos que tienen soporte de hardware, pero no envían con MTE habilitada de forma predeterminada, o inhabilitar la MTE en los dispositivos que sí lo envían.
Compatibilidad con el bootloader
Para admitir esta ABI, el bootloader debe leer el archivo
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 y MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode y MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode y MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
es el parámetro de configuración predeterminado para activar o desactivar las tarjetas en la
SKU Si memtag
es verdadero, el bootloader configura la etiqueta MTE.
reserva, habilita verificaciones de etiquetas en los niveles de excepción más bajos y
comunica la región reservada de etiquetas al kernel mediante DT. Si
memtag
es falso; el bootloader agrega arm64.nomte al
de la línea de comandos de kernel.
Si memtag_kernel
es verdadero, el bootloader se 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
, entonces en los conjuntos
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
a
(1, 0, 0)
y, luego, a (0, 0, 1)
, mientras
y preservar las demás marcas.
Debes configurar tu producto para compilar el objeto binario mtectrl
.
para brindar asistencia relacionada con el espacio del usuario. Luego, configura
ro.arm64.memtag.bootctl_supported
propiedad del sistema para indicar
al sistema si el bootloader admite el mensaje memtag.
Interfaz de usuario
Cuando se establece la propiedadro.arm64.memtag.bootctl_supported
, se muestra
del menú Opciones para desarrolladores permite que el usuario reinicie el dispositivo una vez con MTE
habilitado. El público objetivo de esto son los desarrolladores de apps que quieren probar
sus apps con MTE.
Propiedad del sistema
Para un uso avanzado, la propiedad del sistema
arm64.memtag.bootctl
puede tomar una lista separada por comas de los
los siguientes valores:
-
memtag: habilita de forma persistente MTE en el espacio del usuario (establecida
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once: Se habilita la MTE de espacio del usuario una vez (configurada)
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel: habilita MTE de espacio de kernel (conjunto
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once: Se habilita la MTE de espacio de kernel una vez.
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
). -
memtag-off: Inhabilita MTE (conjunto
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Debes reiniciar el sistema para que se aplique la nueva configuración (ya que que aplica el bootloader).