From fa7c3c01bf7447ed7dde4122cbdf77336f4c9db1 Mon Sep 17 00:00:00 2001 From: nikosszzz <19nikospap@gmail.com> Date: Sat, 1 Aug 2026 14:32:40 +0300 Subject: [PATCH] fix: guard Linux memory fixes to only Linux --- src/kernel/memoryAddressSpace.inc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/kernel/memoryAddressSpace.inc b/src/kernel/memoryAddressSpace.inc index 06d9319..98c1b48 100644 --- a/src/kernel/memoryAddressSpace.inc +++ b/src/kernel/memoryAddressSpace.inc @@ -1059,6 +1059,7 @@ private: {HOST_USER_MIN, HOST_USER_MAX + 1u}, }}; +#if KYTY_PLATFORM == KYTY_PLATFORM_LINUX && !defined(__APPLE__) std::vector> occupied; FILE* maps = fopen("/proc/self/maps", "r"); EXIT_IF(maps == nullptr); @@ -1126,6 +1127,27 @@ private: reserve_range(current, region_end); } } +#else + for (const auto& [start, end]: regions) { + int flags = MAP_PRIVATE | MAP_ANON | MAP_NORESERVE; +#if defined(KYTY_LINKED_GUEST_ADDRESS_SPACE) + flags |= MAP_FIXED; +#elif defined(MAP_FIXED_NOREPLACE) + flags |= MAP_FIXED_NOREPLACE; +#endif + void* ptr = mmap(reinterpret_cast(start), end - start, PROT_NONE, flags, -1, 0); + if (ptr == MAP_FAILED || reinterpret_cast(ptr) != start) { + if (ptr != MAP_FAILED) { + munmap(ptr, end - start); + } + EXIT("failed to reserve guest address space at 0x%016" PRIx64 + ", size 0x%016" PRIx64 "\n", + start, end - start); + } + AddFreeUnlocked(start, end - start); + m_owned.emplace_back(start, end - start); + } +#endif #endif }