mirror of
https://github.com/GrapheneOS/hardened_malloc.git
synced 2024-12-20 05:14:28 -05:00
label allocate_aligned_pages mappings
This commit is contained in:
parent
c8b948e202
commit
1d62075291
@ -1304,7 +1304,7 @@ static int alloc_aligned(void **memptr, size_t alignment, size_t size, size_t mi
|
|||||||
size_t guard_size = get_guard_size(&ra->rng, size);
|
size_t guard_size = get_guard_size(&ra->rng, size);
|
||||||
mutex_unlock(&ra->lock);
|
mutex_unlock(&ra->lock);
|
||||||
|
|
||||||
void *p = allocate_pages_aligned(size, alignment, guard_size);
|
void *p = allocate_pages_aligned(size, alignment, guard_size, "malloc large");
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
11
pages.c
11
pages.c
@ -27,11 +27,7 @@ void *allocate_pages(size_t usable_size, size_t guard_size, bool unprotect, cons
|
|||||||
return usable;
|
return usable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void deallocate_pages(void *usable, size_t usable_size, size_t guard_size) {
|
void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_size, const char *name) {
|
||||||
memory_unmap((char *)usable - guard_size, usable_size + guard_size * 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_size) {
|
|
||||||
usable_size = PAGE_CEILING(usable_size);
|
usable_size = PAGE_CEILING(usable_size);
|
||||||
if (unlikely(!usable_size)) {
|
if (unlikely(!usable_size)) {
|
||||||
errno = ENOMEM;
|
errno = ENOMEM;
|
||||||
@ -54,6 +50,7 @@ void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_
|
|||||||
if (unlikely(real == NULL)) {
|
if (unlikely(real == NULL)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
memory_set_name(real, real_alloc_size, name);
|
||||||
|
|
||||||
void *usable = (char *)real + guard_size;
|
void *usable = (char *)real + guard_size;
|
||||||
|
|
||||||
@ -82,3 +79,7 @@ void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_
|
|||||||
|
|
||||||
return base;
|
return base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void deallocate_pages(void *usable, size_t usable_size, size_t guard_size) {
|
||||||
|
memory_unmap((char *)usable - guard_size, usable_size + guard_size * 2);
|
||||||
|
}
|
||||||
|
2
pages.h
2
pages.h
@ -11,7 +11,7 @@
|
|||||||
#define PAGE_CEILING(s) (((s) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
#define PAGE_CEILING(s) (((s) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
|
||||||
|
|
||||||
void *allocate_pages(size_t usable_size, size_t guard_size, bool unprotect, const char *name);
|
void *allocate_pages(size_t usable_size, size_t guard_size, bool unprotect, const char *name);
|
||||||
|
void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_size, const char *name);
|
||||||
void deallocate_pages(void *usable, size_t usable_size, size_t guard_size);
|
void deallocate_pages(void *usable, size_t usable_size, size_t guard_size);
|
||||||
void *allocate_pages_aligned(size_t usable_size, size_t alignment, size_t guard_size);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user