Android 13 memperkenalkan ABI untuk ruang pengguna guna mengomunikasikan permintaan mode MTE ke bootloader. Ini dapat digunakan untuk mengaktifkan MTE pada perangkat yang memiliki dukungan perangkat keras tetapi tidak mengirim dengan MTE yang diaktifkan secara {i>default<i}, atau nonaktifkan MTE di perangkat yang disertakan dengannya.
Dukungan bootloader
Untuk mendukung ABI ini, bootloader perlu membaca
misc_memtag_message
(ditentukan di
bootloader_message.h) dari partisi misc
.
Jika misc_memtag_message
yang valid ditemukan
(MISC_VIRTUAL_AB_MAGIC_HEADER
kecocokan, dan nomor versinya didukung),
{i>bootloader<i} menghitung
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
adalah setelan aktif/nonaktif memtag default untuk
SKU. Jika memtag
benar, bootloader akan menyiapkan tag MTE
reservasi, mengaktifkan pemeriksaan tag di tingkat pengecualian yang lebih rendah, dan
mengomunikasikan region tag yang dicadangkan ke kernel melalui DT. Jika
memtag
salah, bootloader menambahkan arm64.nomte ke
command line {i>kernel<i}.
Jika memtag_kernel
benar, bootloader akan menambahkan
kasan=on
ke command line kernel.
Bootloader HARUS menghapus MISC_MEMTAG_MODE_MEMTAG_ONCE
dan
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
pada setiap booting.
Jika bootloader mendukung fastboot oem mte
, maka pada set
MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF}
hingga
(1, 0, 0)
, dan turun ke (0, 0, 1)
, sambil
mempertahankan penanda lain.
Anda harus mengonfigurasi produk untuk membangun biner mtectrl
untuk dukungan userspace. Lalu, setel
Properti sistem ro.arm64.memtag.bootctl_supported
untuk menunjukkan
ke sistem di mana {i>bootloader<i}
Anda mendukung pesan memtag.
Antarmuka pengguna
Saat propertiro.arm64.memtag.bootctl_supported
ditetapkan,
di menu Opsi Developer memungkinkan pengguna memulai ulang sekali dengan MTE
mengaktifkan pembuatan versi. Target audiens untuk ini adalah developer aplikasi yang ingin menguji
aplikasi mereka dengan MTE.
Properti sistem
Untuk penggunaan lanjutan, properti sistem
arm64.memtag.bootctl
dapat mengambil daftar yang dipisahkan koma dari
nilai berikut:
-
memtag: secara persisten mengaktifkan MTE ruang pengguna (disetel
MISC_MEMTAG_MODE_MEMTAG
) -
memtag-once: mengaktifkan MTE ruang pengguna satu kali (disetel
MISC_MEMTAG_MODE_MEMTAG_ONCE
) -
memtag-kernel: mengaktifkan MTE kernel-space (disetel
MISC_MEMTAG_MODE_MEMTAG_KERNEL
) -
memtag-kernel-once: mengaktifkan MTE kernel-space sekali
(
MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE
) -
memtag-off: menonaktifkan MTE (disetel
MISC_MEMTAG_MODE_MEMTAG_OFF
)
Sistem harus dimulai ulang agar setelan baru diterapkan (sebagaimana yang diterapkan oleh bootloader).