From 1332c8497bf1875f7c38d13bbb8d4877915d9dfd Mon Sep 17 00:00:00 2001 From: GPUCode Date: Sat, 13 Apr 2024 22:31:31 +0300 Subject: [PATCH] virtual_memory: Ensure mapped addresses stay inside the user area * Fixes LLE Libc crashing on linux --- src/core/virtual_memory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/virtual_memory.cpp b/src/core/virtual_memory.cpp index 3c9c2e200..8907622a4 100644 --- a/src/core/virtual_memory.cpp +++ b/src/core/virtual_memory.cpp @@ -170,7 +170,8 @@ u64 memory_alloc_aligned(u64 address, u64 size, MemoryMode mode, u64 alignment) } return ptr; #else - void* hint_address = reinterpret_cast(AlignUp(address, alignment)); + void* hint_address = address == 0 ? reinterpret_cast(USER_MIN) + : reinterpret_cast(AlignUp(address, alignment)); void* ptr = mmap(hint_address, size, convertMemoryMode(mode), MAP_ANON | MAP_PRIVATE, -1, 0); ASSERT(ptr != MAP_FAILED); return reinterpret_cast(ptr);