Android 13 presenta una ABI para que el espacio del usuario comunique el modo MTE solicitado al cargador de arranque. Esto se puede usar para habilitar MTE en dispositivos que tienen soporte de hardware pero que no se entregan con MTE habilitado de forma predeterminada, o para deshabilitar MTE en dispositivos que sí se entregan con él.
Soporte de cargador de arranque
Para admitir esta ABI, su cargador de arranque necesita leer 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 gestor de arranque 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 de activación/desactivación de memtag predeterminada para el SKU. Si memtag
es verdadero, el cargador de arranque configura la reserva de etiquetas MTE, habilita las comprobaciones 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 cargador de arranque agrega arm64.nomte a la línea de comando del kernel.
Si memtag_kernel
es verdadero, el gestor de arranque agrega kasan=on
a la línea de comando del kernel.
El gestor de arranque DEBE borrar MISC_MEMTAG_MODE_MEMTAG_ONCE
y MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
en cada arranque.
Si el gestor de arranque es compatible con fastboot oem mte
, on establece MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
en (1, 0, 0)
y off en (0, 0, 1)
, conservando los demás indicadores.
Debe configurar su producto para construir el binario mtectrl
para el soporte del espacio de usuario. Luego, configure la propiedad del sistema ro.arm64.memtag.bootctl_supported
para indicarle al sistema que su cargador de arranque admite el mensaje de memtag.
Interfaz de usuario
Cuando se establece la propiedadro.arm64.memtag.bootctl_supported
, un botón en el menú Opciones de desarrollador permite al usuario reiniciar una vez con MTE habilitado. El público objetivo de esto son los desarrolladores de aplicaciones que desean probar sus aplicaciones con MTE. propiedad del sistema
Para uso avanzado, la propiedad del sistema arm64.memtag.bootctl
puede tomar una lista separada por comas de los siguientes valores:
- memtag: habilitar persistentemente MTE en el espacio de usuario (establecer
MISC_MEMTAG_MODE_MEMTAG
) - memtag-once: habilite el espacio de usuario MTE una vez (establezca
MISC_MEMTAG_MODE_MEMTAG_ONCE
) - memtag-kernel: habilitar kernel-space MTE (establecer
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) - memtag-kernel-once: habilitar kernel-space MTE una vez (
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) - memtag-off: deshabilitar MTE (establecer
MISC_MEMTAG_MODE_MEMTAG_OFF
)
El sistema debe reiniciarse para que la nueva configuración surta efecto (tal como la aplica el gestor de arranque).