libc: fix needless malloc failures
The NetBSD libc malloc implementation performs its own out-of-memory check, presumably for performance reasons. The check makes a strong assumption about the address space layout, which is that memory- mapped pages are always located above the heap. However, this assumption does not necessarily hold on MINIX3, thus resulting in malloc reporting an out-of-memory condition without the system actually being out of memory at all. Evidence suggests that in particular dynamically linked (i.e., pkgsrc) binaries were affected by this issue - most notably git. Change-Id: If542fbace0a1cce12aa9e075d51992cbbbf26e94
This commit is contained in:
parent
2d6bbeb0b9
commit
2e23f1755e
1 changed files with 2 additions and 0 deletions
|
@ -818,8 +818,10 @@ imalloc(size_t size)
|
|||
|
||||
if ((size + malloc_pagesize) < size) /* Check for overflow */
|
||||
result = NULL;
|
||||
#ifndef __minix
|
||||
else if ((size + malloc_pagesize) >= (uintptr_t)page_dir)
|
||||
result = NULL;
|
||||
#endif /* !__minix */
|
||||
else if (size <= malloc_maxsize)
|
||||
result = malloc_bytes(size);
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue