O Android 13 introduz uma ABI para o espaço do usuário para comunicar o modo MTE para o carregador de inicialização. Ela pode ser usada 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 desativar a MTE nos dispositivos fornecidos com ela.
Suporte ao carregador de inicialização
Para oferecer suporte a essa ABI, seu carregador de inicialização precisa ler a
misc_memtag_message
(definido em
bootloader_message.h) da partição misc
.
Se um misc_memtag_message
válido for encontrado
MISC_VIRTUAL_AB_MAGIC_HEADER
corresponde a, e o número da versão é compatível.
o carregador de inicialização calcula
memtag = (default_memtag && !(misc.memtag_mode &MISC_MEMTAG_MODE_MEMTAG_OFF)) || misc.memtag_mode e MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode e MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode e MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
é a configuração padrão de ativação/desativação de memtag para o
SKU. Se memtag
for verdadeiro, o carregador de inicialização configurará a tag MTE
reserva, ativa verificações de tags nos níveis de exceção mais baixos e
comunica a região reservada da tag ao kernel via DT. Se
memtag
for falso, o carregador de inicialização anexa arm64.nomte ao
linha de comando do kernel.
Se memtag_kernel
for verdadeiro, o carregador de inicialização anexa
kasan=on
à linha de comando do kernel.
O carregador de inicialização PRECISA limpar MISC_MEMTAG_MODE_MEMTAG_ONCE
e
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
a cada inicialização.
Se o carregador de inicialização for compatível com fastboot oem mte
, os conjuntos
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
para
(1, 0, 0)
e depois para (0, 0, 1)
, enquanto
as outras flags.
Configure seu produto para criar o binário mtectrl
.
para dar suporte ao espaço do usuário. Depois, defina
Propriedade do sistema ro.arm64.memtag.bootctl_supported
para indicar
ao sistema se o carregador de inicialização suporta a mensagem memtag.
Interface do usuário
Quando a propriedadero.arm64.memtag.bootctl_supported
é definida, um
no menu "Developer Options" permite que o usuário reinicie uma vez com a MTE.
ativado. O público-alvo são desenvolvedores de apps que querem testar
os apps deles com a MTE.
Propriedade do sistema
Para uso avançado, a propriedade do sistema
arm64.memtag.bootctl
pode pegar uma lista separada por vírgulas dos
seguintes valores:
-
memtag:ativa continuamente a MTE do espaço do usuário (definida
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once:ativa a MTE do espaço do usuário uma vez (definida
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel:ativa a MTE do espaço do kernel (conjunto de
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once:ativa a MTE do espaço do kernel uma vez.
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off:desativa a MTE (definida
MISC_MEMTAG_MODE_MEMTAG_OFF
)
O sistema precisa ser reiniciado para que a nova configuração entre em vigor (já que é aplicado pelo carregador de inicialização).