Conversation

It is actually a useful, well-designed API. It's just a replacement for the legacy /dev/shm API. The unpin/pin features are quite useful too. You could easily set it up so that Chromium/Firefox would use it. It just doesn't make sense that you can only do unpin/pin for ashmem.
2
4
For example, this is the GrapheneOS /proc/1/maps output on a debug build: gist.github.com/thestinger/28c The [anon:name] labelling is the downstream VMA naming feature. I find it useful enough that in a debug build of the OS hardened_malloc makes very good use of it.
2
Large allocations above 16k/128k (depending on config) get randomly sized guard regions on both sides (mmap PROT_NONE, mprotect inner usable area to PROT_READ|PROT_WRITE) and get quarantined on free (overwritten with mmap MAP_FIXED PROT_NONE) with oldest in quarantine unmapped.
1
1
Hard to balance these things. If you turn off all optional security features (slab allocation quarantines, write after free check and zero-on-free in particular) hardened_malloc is quite fast other than intentional lack of thread cache. Always trying to figure out better balance.
1