From e91dd39cb0b446636e14c531c77ce05b64b2bca5 Mon Sep 17 00:00:00 2001 From: Claxten Date: Thu, 30 Jul 2026 00:00:21 +0200 Subject: [PATCH] Drop redundant PROT_NONE tracking in reserve paths for Linux (#122) src: platform: Linux: Drop redundant PROT_NONE tracking in reserve paths * Some UE4 games, such as The Pathless, reserve a 512 GiB virtual address range during libc startup. Tracking every 4 KiB page causes a long delay and is unnecessary since the range is already PROT_NONE, and untracked pages are treated as NoAccess. Signed-off-by: Claxten --- src/common/platform/sysLinuxVirtual.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/common/platform/sysLinuxVirtual.cpp b/src/common/platform/sysLinuxVirtual.cpp index b70572e93..e61e20aba 100644 --- a/src/common/platform/sysLinuxVirtual.cpp +++ b/src/common/platform/sysLinuxVirtual.cpp @@ -432,11 +432,6 @@ uint64_t SysVirtualReserveAligned(uint64_t address, uint64_t size, uint64_t alig pthread_mutex_lock(&g_virtual_mutex); record_alloc(ret_addr, size); - uintptr_t page_start = ret_addr >> 12u; - uintptr_t page_end = (ret_addr + size - 1) >> 12u; - for (uintptr_t page = page_start; page <= page_end; page++) { - (*g_protects)[page] = PROT_NONE; - } pthread_mutex_unlock(&g_virtual_mutex); return ret_addr; @@ -470,11 +465,6 @@ bool SysVirtualReserveFixed(uint64_t address, uint64_t size) { if (ptr != MAP_FAILED) { pthread_mutex_lock(&g_virtual_mutex); record_alloc(ret_addr, size); - uintptr_t page_start = ret_addr >> 12u; - uintptr_t page_end = (ret_addr + size - 1) >> 12u; - for (uintptr_t page = page_start; page <= page_end; page++) { - (*g_protects)[page] = PROT_NONE; - } pthread_mutex_unlock(&g_virtual_mutex); return true;