commit 43b044fe8adaccb46868ac00c70a4e7a5d354a9c Author: Christoph Moench-Tegeder Bug 1948776 - handle non-existence of MAP_NORESERVE for FreeBSD, r=afranchuk,jld,nika The MAP_NORESERVE flag does not exist in FreeBSD. As the minimally- invasive workaround, I decided to remove that flag directly in the mmap() calls, instead of defining our own MAP_NORESERVE as 0 possibly far away and not obviously connected to these places. Differential Revision: https://phabricator.services.mozilla.com/D238531 diff --git ipc/glue/SharedMemoryPlatform_posix.cpp ipc/glue/SharedMemoryPlatform_posix.cpp index 61121bcbaf8d..b31f2200e8e6 100644 --- ipc/glue/SharedMemoryPlatform_posix.cpp +++ ipc/glue/SharedMemoryPlatform_posix.cpp @@ -447,8 +447,12 @@ bool Platform::Protect(char* aAddr, size_t aSize, Access aAccess) { } void* Platform::FindFreeAddressSpace(size_t aSize) { - void* memory = mmap(nullptr, aSize, PROT_NONE, - MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE, -1, 0); +#ifndef __FreeBSD__ + constexpr int flags = MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE; +#else + constexpr int flags = MAP_ANONYMOUS | MAP_PRIVATE; +#endif + void* memory = mmap(nullptr, aSize, PROT_NONE, flags, -1, 0); if (memory == MAP_FAILED) { return nullptr; } diff --git ipc/glue/SharedMemory_posix.cpp ipc/glue/SharedMemory_posix.cpp index da279f469237..9ed83af4b1f2 100644 --- ipc/glue/SharedMemory_posix.cpp +++ ipc/glue/SharedMemory_posix.cpp @@ -61,8 +61,12 @@ SharedMemory::Handle SharedMemory::CloneHandle(const Handle& aHandle) { } void* SharedMemory::FindFreeAddressSpace(size_t size) { - void* memory = mmap(nullptr, size, PROT_NONE, - MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE, -1, 0); +#ifndef __FreeBSD__ + constexpr int flags = MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE; +#else + constexpr int flags = MAP_ANONYMOUS | MAP_PRIVATE; +#endif + void* memory = mmap(nullptr, size, PROT_NONE, flags, -1, 0); if (memory == MAP_FAILED) { return nullptr; }