Android 13 introduit une ABI permettant à l'espace utilisateur de communiquer les informations du mode MTE au bootloader. Cela permet d'activer MTE sur les appareils disposer d'une prise en charge matérielle, mais ne sont pas livrés avec MTE activé par défaut ; désactiver MTE sur les appareils qui sont livrés avec.
Compatibilité avec le bootloader
Pour prendre en charge cette ABI, votre bootloader doit lire les
misc_memtag_message
(défini dans
<ph type="x-smartling-placeholder"></ph>
bootloader_message.h) à partir de la partition misc
.
Si un élément misc_memtag_message
valide est trouvé
(MISC_VIRTUAL_AB_MAGIC_HEADER
correspond, et le numéro de version est accepté)
le bootloader calcule
memtag = (default_memtag && !(misc.memtag_mode &MISC_MEMTAG_MODE_MEMTAG_OFF)) || misc.memtag_mode et MISC_MEMTAG_MODE_MEMTAG || misc.memtag_mode et MISC_MEMTAG_MODE_MEMTAG_ONCE memtag_kernel = misc.memtag_mode & MISC_MEMTAG_MODE_MEMTAG_KERNEL || misc.memtag_mode et MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
default_memtag
est le paramètre d'activation/de désactivation par défaut de la fonctionnalité memtag
SKU. Si memtag
est défini sur "true", le bootloader configure le tag MTE.
la réservation, active la vérification des tags aux niveaux d'exception inférieurs
communique la région réservée du tag
au noyau via DT. Si
memtag
est "false", le bootloader ajoute arm64.nomte au
de la ligne de commande du noyau.
Si memtag_kernel
est "true", le bootloader ajoute
kasan=on
à la ligne de commande du noyau.
Le bootloader DOIT effacer MISC_MEMTAG_MODE_MEMTAG_ONCE
et
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
à chaque démarrage.
Si le bootloader est compatible avec fastboot oem mte
, sur les ensembles
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
jusqu'à
(1, 0, 0)
et (0, 0, 1)
, tandis que
en conservant les autres indicateurs.
Vous devez configurer votre produit pour compiler le binaire mtectrl
pour la prise en charge
de l'espace utilisateur. Définissez ensuite le paramètre
ro.arm64.memtag.bootctl_supported
pour indiquer
au système pour lequel votre bootloader
accepte le message memtag.
Interface utilisateur
Lorsque la propriétéro.arm64.memtag.bootctl_supported
est définie,
dans le menu Options du développeur permet à l'utilisateur de redémarrer une seule fois avec MTE
est activé. Elle s'adresse aux développeurs
qui souhaitent tester
leurs applications avec MTE.
Propriété système
Pour une utilisation avancée, la propriété système
arm64.memtag.bootctl
peut utiliser une liste des éléments séparés par une virgule
les valeurs suivantes:
-
memtag:active de manière persistante les MTE de l'espace utilisateur (définis
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once:active une seule fois la fonction MTE de l'espace utilisateur (définie
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel:active la fonction kernel-space MTE (définie
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once:active la MTE une fois pour l'espace de noyau
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off:désactive MTE (défini
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Le système doit être redémarré pour que le nouveau paramètre prenne effet appliquée par le bootloader).