ב-Android 13 מוצג ABI למרחב המשתמש כדי להעביר את מצב ה-MTE המבוקש לטוען האתחול. אפשר להשתמש בהגדרה הזו כדי להפעיל MTE במכשירים שיש להם תמיכה בחומרה אבל לא מופעלת בהם MTE כברירת מחדל, או כדי להשבית MTE במכשירים שמופעלת בהם MTE כברירת מחדל.
תמיכה בתוכנת אתחול
כדי לתמוך ב-ABI הזה, תוכנת האתחול צריכה לקרוא את misc_memtag_message (מוגדר ב-
bootloader_message.h) מהמחיצה misc.
אם נמצא misc_memtag_message תקין
(יש התאמה ל-MISC_MEMTAG_MAGIC_HEADER ומספר הגרסה נתמך),
טוען האתחול מבצע את החישוב הבא:
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 היא הגדרת ברירת המחדל להפעלה או להשבתה של memtag עבור המק"ט שצוין על ידי טוען האתחול. אם memtag הוא true, תוכנת האתחול מגדירה שמירת תגים של MTE, מפעילה בדיקות תגים ברמות הנמוכות של החריגים ומעבירה את האזור השמור של התגים לליבה באמצעות devicetree (DT). אם memtag הוא false, טוען האתחול מוסיף את arm64.nomte לשורת הפקודה של ליבת המערכת.
אם הערך של memtag_kernel הוא true, תוכנת האתחול מוסיפה את kasan=on לשורת הפקודה של ליבת המערכת. אחרת, הוא מוסיף את kasan=off.
טוען האתחול צריך לנקות את MISC_MEMTAG_MODE_MEMTAG_ONCE ואת MISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE בכל אתחול.
אם טוען האתחול תומך ב-fastboot oem mte, הארגומנט on צריך להגדיר את הדגלים MISC_MEMTAG_MODE_{MEMTAG, MEMTAG_ONLY, MEMTAG_OFF} ל-(1, 0, 0), והארגומנט off צריך להגדיר אותם ל-(0, 0, 1), תוך שמירה על שאר הדגלים.
מגדירים את המוצר כדי ליצור את הקובץ הבינארי mtectrl לתמיכה במרחב המשתמש.
לאחר מכן מגדירים את מאפיין המערכת ro.arm64.memtag.bootctl_supported כדי לציין למערכת שטוען האתחול תומך בהודעת memtag.
ממשק משתמש
כשהמאפיין ro.arm64.memtag.bootctl_supported מוגדר, התפריט Memory Tagging Extension בתפריט Developer Options מאפשר למשתמש להפעיל את MTE במכשיר. קהל היעד של המאמר הזה הוא מפתחי אפליקציות שרוצים לבדוק את האפליקציות שלהם באמצעות MTE.

איור 1. תפריט המפתחים של MTE.
מאפיין מערכת
לשימוש מתקדם, מאפיין המערכת arm64.memtag.bootctl יכול לקבל רשימה של הערכים הבאים, מופרדים בפסיקים:
-
memtagמפעיל באופן קבוע את MTE במרחב המשתמש (הגדרה שלMISC_MEMTAG_MODE_MEMTAG). -
memtag-onceמאפשר MTE במרחב המשתמש פעם אחת (הגדרה שלMISC_MEMTAG_MODE_MEMTAG_ONCE). -
memtag-kernelמאפשרת MTE במרחב הליבה (הגדרה שלMISC_MEMTAG_MODE_MEMTAG_KERNEL). -
memtag-kernel-onceמאפשר MTE במרחב הליבה פעם אחת (הגדרה שלMISC_MEMTAG_MODE_MEMTAG_KERNEL_ONCE). -
memtag-offמשבית את MTE (הגדרה שלMISC_MEMTAG_MODE_MEMTAG_OFF).
ההגדרה מוחלת על ידי טוען האתחול, לכן צריך להפעיל מחדש את המערכת אחרי שמבצעים שינוי.