You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: MEMORY_TAGGING.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,8 @@
2
2
3
3
IsoAlloc supports a software only memory tagging model that is very similar to Chromes [MTECheckedPtr](https://docs.google.com/document/d/1ph7iOorkGqTuETFZp-xvHV4L2rYootuz1ThzAAoGe30/edit?usp=sharing). This technique for pointer protection is inspired by ARM's upcoming Memory Tagging Extension (MTE) due in ARM v8.5-A. ARM MTE is a comprehensive hardware based solution for detecting memory safety issues in release builds of software with very little overhead. ARM MTE uses the Top Byte Ignore (TBI) feature to transparently tag pointers with metadata or a 'tag'. With ARM MTE this tag is mostly transparently checked and removed in hardware. The feature implemented here in IsoAlloc is conceptually very similar except that tagging and untagging of pointers happens in software.
4
4
5
+
You can read more details about this feature [here](https://struct.github.io/pointer_tagging.html).
6
+
5
7
Note that this feature is experimental, off by default, and the APIs are subject to change!
Copy file name to clipboardExpand all lines: README.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -184,6 +184,8 @@ If all else fails please file an issue on the [github project](https://github.co
184
184
185
185
`void *iso_alloc_untag_ptr(void *p, iso_alloc_zone_handle *zone)` - Untags a pointer from a private zone if `MEMORY_TAGGING` is enabled.
186
186
187
+
`uint8_t iso_alloc_get_mem_tag(void *p, iso_alloc_zone_handle *zone)` - Retrieves the 1 byte tag for an untagged pointer if `MEMORY_TAGGING` is enabled.
188
+
187
189
`void iso_alloc_protect_root()` - Temporarily protects the `iso_alloc` root structure by marking it unreadable.
188
190
189
191
`void iso_alloc_unprotect_root()` - Undoes the operation performed by `iso_alloc_protect_root`.
0 commit comments