From e8aa5c787d7a7eea8c879338a533d6e84bf7185b Mon Sep 17 00:00:00 2001 From: Manish Godse <61718172+mangod9@users.noreply.github.com> Date: Sun, 6 Nov 2022 00:16:33 -0700 Subject: [PATCH] check the right return value for mmap --- src/coreclr/gc/unix/gcenv.unix.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/coreclr/gc/unix/gcenv.unix.cpp b/src/coreclr/gc/unix/gcenv.unix.cpp index b02f6d29c151bf..7ad9a38a75e511 100644 --- a/src/coreclr/gc/unix/gcenv.unix.cpp +++ b/src/coreclr/gc/unix/gcenv.unix.cpp @@ -641,7 +641,7 @@ static void* VirtualReserveInner(size_t size, size_t alignment, uint32_t flags, size_t alignedSize = size + (alignment - OS_PAGE_SIZE); void * pRetVal = mmap(nullptr, alignedSize, PROT_NONE, MAP_ANON | MAP_PRIVATE | hugePagesFlag, -1, 0); - if (pRetVal != NULL) + if (pRetVal != MAP_FAILED) { void * pAlignedRetVal = (void *)(((size_t)pRetVal + (alignment - 1)) & ~(alignment - 1)); size_t startPadding = (size_t)pAlignedRetVal - (size_t)pRetVal; @@ -663,9 +663,10 @@ static void* VirtualReserveInner(size_t size, size_t alignment, uint32_t flags, // Do not include reserved memory in coredump. madvise(pRetVal, size, MADV_DONTDUMP); #endif + return pRetVal; } - return pRetVal; + return NULL; // return NULL if mmap failed } // Reserve virtual memory range.