O Android 13 apresenta uma ABI para que o espaço do usuário comunique o modo MTE solicitado ao carregador de inicialização. Você pode usar isso para ativar a MTE em dispositivos que têm suporte de hardware, mas não são enviados com a MTE ativada por padrão, ou para desativar a MTE em dispositivos que são enviados com ela.
Suporte ao carregador de inicialização
Para oferecer suporte a essa ABI, o carregador de inicialização precisa ler o
misc_memtag_message (definido em
bootloader_message.h) da partição misc.
Se um misc_memtag_message válido for encontrado
(MISC_MEMTAG_MAGIC_HEADER corresponde e o número da versão é compatível),
o carregador de inicialização será calculado da seguinte maneira:
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 é a configuração padrão de ativação ou desativação da memtag para a SKU. Se memtag for true, o carregador de inicialização vai configurar a reserva de tag da MTE, ativar as verificações de tag nos níveis de exceção mais baixos e comunicar a região reservada da tag ao kernel com a árvore de dispositivos (DT). Se
memtag for false, o carregador de inicialização vai anexar
arm64.nomte à linha de comando do kernel.
Se memtag_kernel for true, o carregador de inicialização vai anexar
kasan=on à linha de comando do kernel. Caso contrário, ele
adiciona kasan=off.
O carregador de inicialização precisa limpar MISC_MEMTAG_MODE_MEMTAG_ONCE e
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE em todas as inicializações.
Se o carregador de inicialização for compatível com fastboot oem mte, o argumento "on" vai definir as flags MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} como (1, 0, 0), e o argumento "off" vai defini-las como (0, 0, 1), preservando as outras flags.
Configure seu produto para criar o binário mtectrl para suporte ao espaço do usuário.
Em seguida, defina a propriedade do sistema ro.arm64.memtag.bootctl_supported para indicar
ao sistema que o carregador de inicialização é compatível com a mensagem memtag.
Interface do usuário
Quando a propriedade ro.arm64.memtag.bootctl_supported é definida, a opção Reiniciar com
MTE no menu Opções do desenvolvedor permite reiniciar uma vez com
a MTE ativada. O público-alvo são desenvolvedores de apps que querem testar os aplicativos com
MTE.

Figura 1. Opção para desenvolvedores da MTE.
Propriedade do sistema
Para uso avançado, a propriedade do sistema
arm64.memtag.bootctl pode receber uma lista separada por vírgulas dos
seguintes valores:
-
memtagativa de forma persistente a MTE no espaço do usuário (defineMISC_MEMTAG_MODE_MEMTAG). -
memtag-onceativa a MTE do espaço do usuário uma vez (defineMISC_MEMTAG_MODE_MEMTAG_ONCE). -
memtag-kernelativa a MTE no espaço do kernel (definaMISC_MEMTAG_MODE_MEMTAG_KERNEL). -
memtag-kernel-onceativa a MTE no espaço do kernel uma vez (definaMISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE). -
memtag-offdesativa a MTE (definaMISC_MEMTAG_MODE_MEMTAG_OFF).
A configuração é aplicada pelo carregador de inicialização. Portanto, reinicie o sistema depois de fazer uma mudança.