mirror of
https://github.com/GrapheneOS/hardened_malloc.git
synced 2025-05-23 16:31:20 -04:00
preserve PROT_MTE when releasing memory
This commit is contained in:
parent
9739cb4690
commit
e03579253a
3 changed files with 27 additions and 4 deletions
15
memory.c
15
memory.c
|
@ -39,8 +39,8 @@ void *memory_map_mte(size_t size) {
|
|||
}
|
||||
#endif
|
||||
|
||||
bool memory_map_fixed(void *ptr, size_t size) {
|
||||
void *p = mmap(ptr, size, PROT_NONE, MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED, -1, 0);
|
||||
static bool memory_map_fixed_prot(void *ptr, size_t size, int prot) {
|
||||
void *p = mmap(ptr, size, prot, MAP_ANONYMOUS|MAP_PRIVATE|MAP_FIXED, -1, 0);
|
||||
bool ret = p == MAP_FAILED;
|
||||
if (unlikely(ret) && errno != ENOMEM) {
|
||||
fatal_error("non-ENOMEM MAP_FIXED mmap failure");
|
||||
|
@ -48,6 +48,17 @@ bool memory_map_fixed(void *ptr, size_t size) {
|
|||
return ret;
|
||||
}
|
||||
|
||||
bool memory_map_fixed(void *ptr, size_t size) {
|
||||
return memory_map_fixed_prot(ptr, size, PROT_NONE);
|
||||
}
|
||||
|
||||
#ifdef HAS_ARM_MTE
|
||||
// Note that PROT_MTE can't be cleared via mprotect
|
||||
bool memory_map_fixed_mte(void *ptr, size_t size) {
|
||||
return memory_map_fixed_prot(ptr, size, PROT_MTE);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool memory_unmap(void *ptr, size_t size) {
|
||||
bool ret = munmap(ptr, size);
|
||||
if (unlikely(ret) && errno != ENOMEM) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue